将嵌入的.pdf保存为.pdf文件

时间:2017-09-30 12:38:44

标签: python pdf

我尝试使用以下代码从Chrome浏览器下载嵌入式pdf,但该文件存储在我的C:\驱动器上,如下所示:C:\TEST_A_15.pdf.crdownload

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("=")[3]
    print("File: {}".format(filename))

    print("Status: Download Complete.")
    print("Folder: {}".format(download_folder))

    driver.close()

如果我将filename的行调整到下面的内容,那么我的硬盘驱动器上的C:\TEST_A_15.pdf文件会在最后没有.crdownload。但后来我得到一个IndexError: list index out of range这是合乎逻辑的,因为在{4}找不到"="

    filename = lnk.split("=")[4]

使用的网址(我更改了pdf文件的主机名和名称,因此网址不起作用): https://testing.nl/getpdf.asp?id=ORsP5UqX6IikuikcGiLD&unique=adda3b24-f9ca-4007-898a-caed5309c140&filename=TEST_A_15.pdf

当我将网络驱动器与filename = lnk.split("=")[3]一起使用时,更奇怪的是,文件将存储为.tmp文件,即2498d715-84aa-4e81-8037-264bb0211b4b.tmp,当我使用不正确的代码时{{1} })它给出filename = lnk.split("=")[4]但是正确地将文件保存为网络驱动器上的.pdf文件。

1 个答案:

答案 0 :(得分:0)

我已经解决了,问题是在整个pdf下载之前webdriver已关闭,导致.tmp.crdownload个文件。所以我在关闭驱动程序之前构建了sleep