【发布时间】:2021-12-01 13:57:57
【问题描述】:
我正在尝试使用 selenium 和 python 从网站NSE-India 下载每日报告。
下载日报的方法
- 网站加载时没有数据
- X 时间后,页面加载报告信息
- 一旦页面加载了报告数据,就会出现“table[@id='etfTable']”
- 在代码中添加了显式等待,等待“table[@id='etfTable']”加载
显式等待代码
element=WebDriverWait(driver,50).until(EC.visibility_of_element_located(By.xpath,"//table[@id='etfTable']"))
-
使用 xpath 提取 onclick 事件
downloadcsv= driver.find_element_by_xpath("//div[@id='esw-etf']/div[2]/div/div[3]/div/ul/li/a") -
触发点击下载文件
完整代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC options =webdriver.ChromeOptions(); prefs={"download.default_directory":"/Volumes/Project/WebScraper/downloadData"}; options.binary_location=r'/Applications/Google Chrome 2.app/Contents/MacOS/Google Chrome' chrome_driver_binary =r'/usr/local/Caskroom/chromedriver/94.0.4606.61/chromedriver' options.add_experimental_option("prefs",prefs) driver =webdriver.Chrome(chrome_driver_binary,options=options) try: #driver.implicity_wait(10) driver.get('https://www.nseindia.com/market-data/exchange-traded-funds-etf') element =WebDriverWait(driver,50).until(EC.visibility_of_element_located(By.xpath,"//table[@id='etfTable']")) downloadcsv= driver.find_element_by_xpath("//div[@id='esw-etf']/div[2]/div/div[3]/div/ul/li/a") print(downloadcsv) downloadcsv.click() time.sleep(5) driver.close() except: print("Invalid URL")
我面临的问题。
- 页面一直在加载,但在不使用 selenium 的情况下启动时,会加载每日报告
- 无法下载每日报告
【问题讨论】:
-
正如@Darkknight/@pmadhu 所提到的,网站有一些机器人检测,导致“403”响应。能够在 undetected_chromedriver的帮助下绕过机器人检测>欲了解更多信息[stackoverflow.com/questions/65529808/…
标签: python selenium selenium-webdriver download