使用Selenium(Python)在网页中选择活动日期
我正在尝试从这个网页获取数据 正如你所看到的,我需要选择一个开始和结束日期并获取数据。但问题是,当你打开日历时,你也可以看到非活动日,尤其是在最后一天 我为开始日期编写了一个代码,它工作得很好,但不实用使用Selenium(Python)在网页中选择活动日期,python,html,selenium,web-scraping,datepicker,Python,Html,Selenium,Web Scraping,Datepicker,我正在尝试从这个网页获取数据 正如你所看到的,我需要选择一个开始和结束日期并获取数据。但问题是,当你打开日历时,你也可以看到非活动日,尤其是在最后一天 我为开始日期编写了一个代码,它工作得很好,但不实用 import re import time from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriv
import re
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
url = r'https://rapor.epias.com.tr/rapor/xhtml/ptfSmfListeleme.xhtml'
driver = webdriver.Chrome(r'...\chromedriver.exe')
driver.get(url)
link = driver.find_element_by_xpath('//*[@id="PmumBI:baslangicTarih"]/button/span[1]')
link.click()
while True:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[1]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[2]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[3]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[4]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[5]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[6]/a')
input_date.click()
except:
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[7]/a')
input_date.click()
except:
break
但是如果我想在最后的日期使用相同的代码,我必须创建7个以上的try代码。有什么方法可以让这变得简单,比如在活动日期之间进行选择吗?而不是:
while True:
您可以使用for循环,并在xpath表达式中使用索引:
for i in range(20):
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[' +str(i)+']/a')
input_date.click()
break
except:
pass
希望能有帮助 而不是:
while True:
您可以使用for循环,并在xpath表达式中使用索引:
for i in range(20):
try:
input_date = driver.find_element_by_xpath('//*[@id="ui-datepicker-div"]/table/tbody/tr[1]/td[' +str(i)+']/a')
input_date.click()
break
except:
pass
希望能有帮助 你能举一个不活动的开始日期和结束日期的例子吗?当我点击日历时,它们似乎都是可选的?另外,您是否有一系列需要查看的日期,或者您只需要站点中的随机数据?能否举例说明不活动的开始日期和结束日期?当我点击日历时,它们似乎都是可选的?另外,你有一系列你需要浏览的日期吗,还是你只需要网站上的随机数据?是的,非常感谢,不知何故我不能像这样思考['+str(I)+']是的,非常感谢,不知何故我不能像这样思考['+str(I)+']