【发布时间】:2020-12-18 23:43:52
【问题描述】:
我正在尝试从以下 url 下载多个 csv 文件,并希望使用 selenium 或任何其他方法。该网址需要填写一个表格,其中包括从多个下拉列表中选择选项。然后,需要单击“图像”按钮才能显示下载链接。 如果我从 python 运行 selenium chrome 驱动程序并单击按钮,则不会出现任何内容。我也无法弄清楚 csv 文件的 url,因此可以使用“requests”或“urllib”下载它们。
这是我需要下载的网址: https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm
到目前为止,这是我的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm'
driver.get(url)
instr_type = Select(driver.find_element_by_id('instrumentType'))
symbol = Select(driver.find_element_by_id('symbol'))
opt_type = Select(driver.find_element_by_id('optionType'))
date_range = Select(driver.find_element_by_id('dateRange'))
button = driver.find_element_by_xpath("//input[@src='/common/images/btn-get-data.gif' and @type='image']")
instr_type.select_by_visible_text('Index Options')
symbol.select_by_visible_text('NIFTY 50')
opt_type.select_by_visible_text('CE')
date_range.select_by_visible_text('90 Days')
button.click()
这就是 selenium 驱动程序中发生的事情 -
关于如何从上面的链接下载 csv 文件有什么想法吗?不一定必须使用硒。
【问题讨论】:
-
您点击它时没有收到任何错误消息吗?您是否等待/睡觉以获取下载链接?
-
当我将 Selenium 与 Chrome 或 Firefox 一起使用时,此页面对我不起作用,但它在没有 Selenium 的 Chrome 和 Firefox 中工作 - 它可能与 Selenium 有一些冲突,或者它使用某些系统来阻止脚本使用硒
-
我可以使用
requests将表格作为 HTML 获取,但我必须设置正确的user-agent- 至少短'User-Agent': 'Mozilla/5.0'。没有user-agent,代码就会挂起,永远不会结束。也许带有 Selenium 的浏览器也有类似的问题。但不知道能不能修好。 -
我看到它使用 JavaScript 从这个 HTML 中获取数据并生成转换为 base64 并直接嵌入到链接中的 CSV。因此,也许使用
BeautifulSoup或lxml获取带有数据的HTML 和抓取数据会更快更简单。
标签: python selenium csv button python-requests