我尝试使用以下代码从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文件。
答案 0 :(得分:0)
我已经解决了,问题是在整个pdf下载之前webdriver
已关闭,导致.tmp
或.crdownload
个文件。所以我在关闭驱动程序之前构建了sleep
。