2017-07-23 3 views
0

Ich kann nicht auf den Knopf der Tage klicken.Wie scrape alle Daten von einer Seite mit Selen?

from selenium import webdriver 
browser = webdriver.Chrome() 
url = "http://rate.am/en/armenian-dram-exchange-rates/banks/non-cash" 
browser.get(url) 
from selenium import * 
import time 
from selenium import webdriver 
from selenium.webdriver.support.ui import Select 
from time import* 

Nachdem alle notwendigen Werkzeuge Import habe ich versucht, Code zu schreiben, die auf die Seite gehen, klicken Sie auf die historischen Daten und Termine, aber ich habe Probleme an den Tagen Tasten mit einem Klick

browser = webdriver.Chrome() 
url = "http://rate.am/en/armenian-dram-exchange-rates/banks/non-cash" 
browser.get(url) 
all_data=browser.find_element_by_xpath('//*[@id="aspnetForm"]/div[3]/div[2]/div[1]/div[4]/div[3]/table/tbody/tr/td[1]/a') 
all_data.click() 
years=browser.find_element_by_xpath('//*[@id="calBorder"]/span/table/tbody/tr[1]/td/table/tbody/tr/td[2]/select') 
for i in range(len(years.find_elements_by_tag_name('option'))):  
    for j in range(12): 
     for z in range(31): 
      time=browser.find_element_by_xpath('//*[@id="ctl00_Content_RB_dtpick1_dpHours"]') 
      for x in range(len(time.find_elements_by_tag_name('option'))): 
       all_data=browser.find_element_by_xpath('//*[@id="aspnetForm"]/div[3]/div[2]/div[1]/div[4]/div[3]/table/tbody/tr/td[1]/a') 
       all_data.click() 
       sleep(0.3)     
       yearss = browser.find_element_by_xpath('//*[@id="calBorder"]/span/table/tbody/tr[1]/td/table/tbody/tr/td[2]/select') 
       sy = Select(yearss) 
       sy.select_by_index(i) 
       sleep(0.3) 
       months = browser.find_element_by_xpath('//*[@id="calBorder"]/span/table/tbody/tr[1]/td/table/tbody/tr/td[1]/select') 
       sm = Select(months) 
       sm.select_by_index(j) 
       sleep(0.3) 
       days=browser.find_element_by_xpath('//*[@id="calBorder"]/span/table/tbody/tr[3]/td/table/tbody/tr[2]/td[6]') 
       if 'bgcolor="white"'==None in days: 
        days.click() 
        sleep(0.3) 
       times=browser.find_element_by_xpath('//*[@id="ctl00_Content_RB_dtpick1_dpHours"]') 
       ti=Select(times) 
       ti.select_by_index(x) 
       sleep(0.3) 
       show=browser.find_element_by_xpath('//*[@id="ctl00_Content_RB_dtpick1_btnOk"]') 
       show.click() 
       sleep(0.3) 
+0

vielleicht können Sie versuchen, url youself bauen, wie http://rate.am/en/armenian-dram-exchange-rates/banks/non-cash/2017/06/15/13-15 – newlife

+0

I Ich bin nicht berechtigt, andere Links zu verwenden –

+0

Sie könnten daran interessiert zu wissen, dass Sie die Notwendigkeit der Verwendung von Selen vermeiden können, indem Sie Anfragen wie http://rate.am/en/armenian-dram-exchange-rates/banks/non- Bargeld/2015/04/09/20-15. Wohlgemerkt, trotz der Anwesenheit des 'en' in dieser URL wird die Seite in einem nicht-römischen Alphabet (armenisch, nehme ich an) zurückgegeben. Würdest du das tun? –

Antwort

0

Ich habe das Jahr nicht behandelt, aber das Muster wäre das gleiche. Was die Auswahl der Tage betrifft, habe ich einen XPath erstellt, der alle td Elemente identifiziert und dann diejenigen auswählt, deren Text einem bestimmten Datum entspricht, nämlich 23, was nur eine zufällige Auswahl meinerseits war.

>>> from selenium import webdriver 
>>> browser = webdriver.Chrome() 
>>> url = 'http://rate.am/en/armenian-dram-exchange-rates/banks/non-cash' 
>>> browser.get(url) 
>>> browser.find_element_by_xpath('.//a[@class="date-picker"]').click() 
>>> browser.find_element_by_xpath('.//select[@name="MonthSelector"]').click() 
>>> browser.find_element_by_xpath('.//select[@name="MonthSelector"]/option[1]').click() 
>>> browser.find_elements_by_xpath('.//td[@class="calTD"]') 
>>> browser.find_elements_by_xpath('.//td[@class="calTD" and text()="23"]')[0].click() 
>>> browser.find_element_by_xpath('.//input[@id="ctl00_Content_RB_dtpick1_btnOk"]').click() 
Verwandte Themen