2017-09-30 145 views
0

我试图从下面的代码下载chrome浏览器的嵌入式pdf,但是该文件正在存储在我的C:\驱动器中,如下面的文件:C:\TEST_A_15.pdf.crdownload保存嵌入.pdf不是.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("=")[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] 

使用的URL(我改变主机名和PDF文件的名称,以便URL不工作): 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,当我使用不正确的代码(filename = lnk.split("=")[4])它给人的IndexError但正确保存文件作为网络驱动器上的.pdf文件。

+0

你有些令人费解的问题归结为用split(“=”)解析下载URL。请编辑您的问题并提供[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),它可以重现问题。 – martineau

回答

0

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