【发布时间】:2019-01-14 12:08:32
【问题描述】:
我有一个使用 selenium 的 Python3 小脚本,可以从网站 (http://digesto.asamblea.gob.ni/consultas/coleccion/) 抓取旧报纸的链接,但是,我的嵌套循环无法正常运行。
它将遍历所有行以收集发布日期以将相应的 PDF 命名为 (Gaceta_Oficial_Date.pdf) 并遍历我列表中的所有链接,而不是遍历所有链接并将其命名为相同。所以第一个循环不会迭代。
但是如何让两个循环一起“工作”,以便一个循环得到第一个循环的结果呢?
这是脚本的相关部分:
import os
import datetime
new_links = ['http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=vPjrUnz0wbA%3D',
'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=dsyx6l1Fbig%3D',
'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=Cb64W7EHlD8%3D',
'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=A4TKEG9x4F8%3D'] # only 4 links in list for simplification
table_id = driver.find_element(By.ID, 'tableDocCollection')
rows = table_id.find_elements_by_css_selector("tbody tr") # get all table rows
title = "Gaceta_Oficial_"
extension = ".pdf"
for row in rows:
col = row.find_elements(By.TAG_NAME, "td")[2]
date = col.text
print(date)
date = datetime.datetime.strptime(date, '%d/%m/%Y').strftime('%Y%m%d')
filename = title + str(date) + extension
print(filename)
for new_link in new_links:
print("Downloading %s" % filename)
r = requests.get(new_link)
open(os.path.expanduser("~/Downloads/" + filename, 'wb').write(r.content)
【问题讨论】:
-
wget在 2019 年似乎是一个奇怪的选择,因为有requests。 -
哪种方式更好?你能帮我解决这个问题吗,三胞胎? :)
-
我没有详细检查过
wget,所以我不能真正评论好与坏。您可能会发现找到对流行且受支持的库的支持比找到一个奇怪且可能被遗弃的旧库要容易得多。看起来wget是wget实用程序的包装器,而requests为您提供本机Python HTTP,让您的Python 代码有机会在会话中间处理各种回调。 -
那我就改成 requests 了。谢谢你,三胞胎。如果你已经在上面了,你能帮我解决我的问题吗? :)
标签: python python-3.x loops selenium download