如何使用Selenium从一个页面中提取所有数据?

2024-04-16 13:25:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我不能点击按钮的日子。你知道吗

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*

导入所有必要的工具后,我尝试编写代码,这些代码将转到页面,单击历史数据并按日期进行,但我在单击日期按钮时遇到问题

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)

Tags: fromimportdivbrowseridbytablesleep
1条回答
网友
1楼 · 发布于 2024-04-16 13:25:52

我没有处理这一年,但模式是一样的。至于选择日期,我创建了一个xpath,它将标识所有td元素,然后选择那些文本等于给定日期的元素,即23,这只是我的随机选择。你知道吗

>>> 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()

相关问题 更多 >