我想从一个名为hdrihaven.com的网站下载多个.hdr文件。 我对python的了解不是很好,但是这是到目前为止我尝试过的:
import requests
url = 'https://hdrihaven.com/files/hdris/'
resolution = '4k'
file = 'pump_station' #would need to be every file
url_2k = url + file + '_' + resolution + '.hdr'
print(url_2k)
r = requests.get(url_2k, allow_redirects=True)
open(file + resolution + '.hdr', 'wb').write(r.content)
理想的file
只会遍历目录中的每个文件。
谢谢您的回答!
编辑
我在github上找到了一个满足我需要的脚本:https://github.com/Alzy/hdrihaven_dl。我在https://github.com/ktkk/hdrihaven-downloader中对其进行了编辑以满足自己的需求。它使用注释中建议的遍历所有可用文件列表的技术。
我发现,与例如从本地下载相比,请求模块以及urllib极其慢。铬。如果有人对如何加快这些速度有想法,请告诉我。
答案 0 :(得分:0)
您可以通过以下两种方式进行此操作:
您可以使用URL
来获取所有文件并遍历循环以分别下载它们。当然,只有在存在这样的URL
的情况下,这才起作用。
您可以将单独的URL
传递给可以并行/批量下载的功能。
例如:
import os
import requests
from time import time
from multiprocessing.pool import ThreadPool
def url_response(url):
path, url = url
r = requests.get(url, stream = True)
with open(path, 'wb') as f:
for ch in r:
f.write(ch)
urls = [("Event1", "https://www.python.org/events/python-events/805/"),("Event2", "https://www.python.org/events/python-events/801/"),
("Event3", "https://www.python.org/events/python-user-group/816/")]
start = time()
for x in urls:
url_response (x)
print(f"Time to download: {time() - start}")
此代码段摘自此处Download multiple files (Parallel/bulk download)。在此处阅读有关如何执行此操作的更多信息。