【问题标题】:Download csv file from javascript link using python selenium使用 python selenium 从 javascript 链接下载 csv 文件
【发布时间】:2018-06-20 17:50:58
【问题描述】:

我正在尝试下载 csv 文件,可通过单击 this webpage 上标题为“导出数据”的按钮获得该文件。鉴于该按钮运行一个 javascript 程序,我正在尝试为此使用 selenium。我目前在下面的尝试会生成错误消息:

“WebDriverException: 未知错误: 'entry.level' 缺失或无效 (会话信息:chrome=63.0.3239.132) (驱动信息:chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.16299 x86_64)"

chrome_path = path
driver=webdriver.Chrome(chrome_path)
url = 'http://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=fangraphsdc&team=0&lg=all&players=0&sort=24%2cd'
driver.get(url)
driver.find_element_by_xpath('//*[@id="ProjectionBoard1_cmdCSV"]').click()

错误发生在代码的最后一行。有什么想法吗?

【问题讨论】:

    标签: javascript python csv selenium web-scraping


    【解决方案1】:

    根据URL,您已将WebElement 与文本共享,因为Export Data<a> 标记内。因此,您将能够单击带有以下代码行的链接:

    driver.find_element_by_link_text("Export Data").click()
    

    但是这个解决方案仍然失败,因为您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

    • 您正在使用 chromedriver=2.27.440174
    • chromedriver=2.27.440174 的发行说明明确提及以下内容:

    Supports Chrome v55-57

    • 您正在使用 chrome=63.0.3239.132
    • chromedriver=2.34 的发行说明明确提及以下内容:

    Supports Chrome v61-63

    • 我们不知道您的 Selenium Version Info
    • 我们不知道您的 java.version

    解决方案

    • JDK 升级到最近的级别JDK Version 8 Update 151
    • 保持ChromeDriverChromeDriver v2.34级别。
    • 保持ChromeChrome v63.x级别。
    • Selenium 升级到当前级别Version 3.8.1
    • 执行您的Test

    【讨论】:

    • 根据您提供的解决方案,刮板可以点击该链接@DebanjanB。但是,以编程方式下载的文件不是该网页中可用的文件。刮板下载的文件具有.tmp 之类的扩展名。但是,手动单击可以让浏览器下载确切的文件。你知道为什么会有这种不同的行为吗?为您当前的解决方案 +1。
    • 谢谢 - 在更新 selenium 和 chromedriver 并使用 link_text 找到要单击的元素后,代码确实下载了 chrome 中的文件。我很好奇我是否可以直接在python中打开csv(而不是在下载完成后直接从下载中打开文件)。
    • @user3725021 这不应该是一个单独的问题吗:) 请接受答案。
    • 也许应该。我通常会尽量避免问两个问题来解决一个问题,但鉴于我没有描述上面的完整问题,我添加了第二个问题here
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多