【问题标题】:Access the Download button in PDF using Selenium, Python使用 Selenium、Python 访问 PDF 中的下载按钮
【发布时间】:2016-11-21 13:03:30
【问题描述】:

我正在尝试使用 Selenium Webdriver for Chrome 下载 PDF (http://judis.nic.in/supremecourt/imgs1.aspx?filename=43215)。

“下载”按钮显示在页面顶部的动态功能区中,将鼠标悬停在该功能区上时会出现。

当鼠标悬停在功能区上时,这是 PDF 的外观。

PDF without the hover-over ribbon

我打算通过我的 Python 脚本单击此下载按钮(打印符号旁边的向下箭头符号)。

提前谢谢你。

【问题讨论】:

    标签: python selenium pdf


    【解决方案1】:

    你不需要 selenium 来下载它。你可以使用urllib2

    import urllib2
    
    def download_file(pdf_url):
        response = urllib2.urlopen(pdf_url)
        file = open("doc.pdf", 'w')
        file.write(response.read())
        file.close()
    
    def main():
        download_file("http://judis.nic.in/supremecourt/imgs1.aspx?filename=43215")
    
    if __name__ == "__main__":
        main()
    

    【讨论】:

    • 谢谢。这行得通。还有什么方法可以将响应写入文本文件 (.txt) 而不是 PDF (.pdf)?
    • 它解决了您的问题,请将其标记为答案。不幸的是,这不会将其转换为文本文件。您可以使用这样的解决方案:stackoverflow.com/questions/25665/…
    • 如果链接受登录名和密码保护怎么办?
    • @StackUP: stackoverflow.com/questions/35376005/… 或者你可以使用 selenium 登录然后访问文件。
    • @Ryan:PDF 仅在活动会话中可用。每次点击链接生成 PDF。它包含新生成的令牌。所以旧链接不能再使用了。 Selenium 无法下载,因为它不是 PDF 的直接链接。
    【解决方案2】:

    PDF 基本上在浏览器的内置扩展中打开,您可以通过该扩展查看 PDF 文件。它的 HTML 基本上是 Selenium 无法访问的,因为 HTML 驻留在扩展中。

    您可以使用requests library 下载 PDF simple。

    import requests
    
    url = "http://judis.nic.in/supremecourt/imgs1.aspx?filename=43215"
    r = requests.get(url, stream=True)
    
    with open("THE.pdf", "wb") as fd:
        for ch in r.iter_content():
            fd.write(ch)
    

    【讨论】:

    • 如果链接仅适用于活动会话怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2021-02-14
    • 2019-04-12
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多