gpt4 book ai didi

python - 在 Python 中使用 selenium 循环下载文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:50 24 4
gpt4 key购买 nike

这是 this 的后续问题上一个问题是关于如何从 Google Patents 下载约 1000 个文件。

我想遍历文件名列表fname = ["ipg150106.zip", "ipg150113.zip"]并模拟单击并将这些文件保存到我的计算机。以下示例适用于我并下载单个文件:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

# Define parameters
savepath = 'D:\\' # set the desired path here for the files


# Download the files from Google Patents
profile = FirefoxProfile ()
profile.set_preference("browser.download.panel.shown", False)

profile.set_preference("browser.download.folderList", 2) # 2 means specify custom location
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", savepath) # choose folder to download to
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/octet-stream')

driver = webdriver.Firefox(firefox_profile=profile)

url = 'https://www.google.com/googlebooks/uspto-patents-grants-text.html#2015'
driver.get(url)

filename = driver.find_element_by_xpath('//a[contains(text(), "ipg150106.zip")]')
filename.click()

我尝试用一​​个列表和一个循环来替换它,如下所示:

fname = ["ipg150106.zip", "ipg150113.zip"]

for f in fname:
filename = driver.find_element_by_xpath('//a[contains(text(), f)]')
filename.click()
print('Finished loop for: {}.'.format(f))

但是,浏览器打开,但没有任何反应(没有单击文件)。有什么想法吗?

最佳答案

您需要将文件名传递到 XPath 表达式中:

filename = driver.find_element_by_xpath('//a[contains(text(), "{filename}")]'.format(filename=f))

不过,这里更简单的定位技术是 "by partial link text" :

for f in fname:
filename = driver.find_element_by_partial_link_text(f)
filename.click()

关于python - 在 Python 中使用 selenium 循环下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com