【问题标题】:Python Download PDF Embedded in a PagePython下载嵌入页面的PDF
【发布时间】:2017-09-14 04:42:16
【问题描述】:

我有这个链接:

我想下载嵌入的 PDF。

我尝试了urllibrequest 的常规方法,但它们不起作用。

import urllib2

url = "http://www.equibase.com/premium/chartEmb.cfm?track=ALB&raceDate=06/17/2002&cy=USA&rn=1"
response = urllib2.urlopen(url)
file = open("document.pdf", 'wb')
file.write(response.read())
file.close()

此外,我也试图找到 pdf 的原始链接,但它也没有工作。

内部链接:

【问题讨论】:

    标签: python pdf web-scraping


    【解决方案1】:

    Selenium 与特定的ChromeProfile 一起使用,您可以使用以下代码下载嵌入式pdf:

    代码:

    def download_pdf(lnk):
    
        from selenium import webdriver
        from time import sleep
    
        options = webdriver.ChromeOptions()
    
        download_folder = "C:\\"    
    
        profile = {"plugins.plugins_list": [{"enabled": False,
                                             "name": "Chrome PDF Viewer"}],
                   "download.default_directory": download_folder,
                   "download.extensions_to_open": ""}
    
        options.add_experimental_option("prefs", profile)
    
        print("Downloading file from link: {}".format(lnk))
    
        driver = webdriver.Chrome(chrome_options = options)
        driver.get(lnk)
    
        filename = lnk.split("/")[4].split(".cfm")[0]
        print("File: {}".format(filename))
    
        print("Status: Download Complete.")
        print("Folder: {}".format(download_folder))
    
        driver.close()
    

    当我调用这个函数时:

    download_pdf("http://www.equibase.com/premium/eqbPDFChartPlus.cfm?RACE=1&BorP=P&TID=ALB&CTRY=USA&DT=06/17/2002&DAY=D&STYLE=EQB")
    

    这就是输出:

    >>> Downloading file from link: http://www.equibase.com/premium/eqbPDFChartPlus.cfm?RACE=1&BorP=P&TID=ALB&CTRY=USA&DT=06/17/2002&DAY=D&STYLE=EQB
    >>> File: eqbPDFChartPlus
    >>> Status: Download Complete.
    >>> Folder: C:\
    


    看看具体的简介:

    profile = {"plugins.plugins_list": [{"enabled": False,
                                         "name": "Chrome PDF Viewer"}],
               "download.default_directory": download_folder,
               "download.extensions_to_open": ""}
    

    它禁用Chrome PDF Viewer插件(将pdf嵌入网页),将默认下载文件夹设置为download_folder变量中定义的文件夹,并设置Chrome不允许自动打开任何扩展。

    之后,当您打开所谓的“内部链接”时,您的网络驱动程序会自动将.pdf 文件下载到download_folder

    【讨论】:

    • 这个方法的问题是,下载pdf文件时如何定义文件名?
    • @exteral 但您可以添加几行代码来重命名上次下载的文件download_folder
    • @dot.Py 你怎么找到所谓的“内部链接”?
    猜你喜欢
    • 2023-03-06
    • 2021-07-05
    • 2019-08-10
    • 2020-11-12
    • 2014-11-26
    • 2020-09-24
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多