首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用selenium从网站下载该文件

无法使用selenium从网站下载该文件
EN

Stack Overflow用户
提问于 2021-10-13 03:51:51
回答 2查看 83关注 0票数 0

我正在尝试使用selenium & python从NSE-印度网站下载每日报告。

下载每日报告的方法

  • 没有数据的网站加载
  • 在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")
  • 触发单击以下载文件。

全码

从selenium.webdriver.common.by导入from驱动程序从selenium.webdriver.support.ui导入WebDriverWait从selenium.webdriver.support导入expected_conditions作为EC选项=webdriver.ChromeOptions();options.binary_location=r'/Applications/Google Chrome 2.try/Content/MacOS/Google‘chrome_driver_binary =r'/usr/local/Caskroom/chromedriver/94.0.4606.61/chromedriver’options.add_experimental_option("prefs",prefs)驱动程序=webdriver.Chrome(chrome_driver_binary,options=options)尝试:#driver.implicity_wait(10) driver.get('https://www.nseindia.com/market-data/exchange-traded-funds-etf')元素=WebDriverWait(driver,50).until(EC.visibility_of_element_located(By.xpath,“//table@id=‘etfTable’”( downloadcsv= downloadcsv= print(downloadcsv) downloadcsv.click() time.sleep(5) driver.close()除外:print(“无效URL")

我面临的问题。

  • 该页一直在加载,但在没有selenium的情况下启动时,每日报告将被加载。

正常 硒负载

  • 无法下载每日报告
EN

回答 2

Stack Overflow用户

发布于 2021-10-13 05:29:56

程序中有一些语法错误。就像几行分号一样,和使用WebDriverWait查找element时,括号缺少了

试着像下面这样确认一下。

可以使用Javascript单击该元素。

代码语言:javascript
复制
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']/tbody/tr[2]")))


downloadcsv= driver.find_element_by_xpath("//img[@title='csv']/parent::a")
print(downloadcsv)
driver.execute_script("arguments[0].click();",downloadcsv)
票数 0
EN

Stack Overflow用户

发布于 2021-10-14 07:18:51

这不是代码的问题,而是网站的问题。我检查了它的大部分时间,它不允许我点击CSV文件。而不是下载CSV文件,您可以刮表。

代码语言:javascript
复制
# for direct to the page delete cookies is very important otherwise it will deny the access

browser.delete_all_cookies()
browser.get('https://www.nseindia.com/market-data/exchange-traded-funds-etf')
sleep(5)

soup = BeautifulSoup(browser.page_source, 'html.parser')
# scrape the table from the soup
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69549543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档