我是Python编程的初学者,希望获得一些帮助修复我的代码。我目前正在使用Python请求库从URL列表中下载一堆PDF文件,并将它们保存为预设名称(这也被提取到另一个列表中)。下面是我的代码:
import requests
from pathlib import Path
url = dict_url.values() #list of URLs that I want to download
filename = dict_url.keys() #list of file names that I want to save my downloaded files as
for k in url:
for i in filename:
name = Path(i)
link = k
response = requests.get(link)
name.write_bytes(response.content)
我可以使用它,但是我的输出是一个相同的PDF文件,但是以不同的名称下载了许多次。我希望它下载不同的PDF文件,并从列表中保存其相应名称。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
问题是您的嵌套循环正在下载单个文件x
次,其中x
是文件名的数量。然后,将其重命名为每个文件名。然后下载下一个文件,将其重命名x
次,覆盖先前的下载。可以通过删除嵌套循环来解决此问题。
for k in dict_url: #loop through origional dict
name = Path(k) #k is key
link = dict_url[k] #get value by lookup using key
response = requests.get(link)
name.write_bytes(response.content)
答案 1 :(得分:0)
这应该给您带来更好的结果。只有一个循环将使您可以同时循环浏览文件名和url。
import requests
from pathlib import Path
for i, k in dict_url.items():
name = Path(i)
link = k
response = requests.get(link)
name.write_bytes(response.content)