2017-09-30 184 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