我目前正在使用此代码(python 3.5.2):
from multiprocessing.dummy import Pool
from urllib.request import urlretrieve
urls = ["link"]
result = Pool(4).map(urlretrieve, urls)
print(result[0][0])
它可以工作,但是用一些奇怪的名字保存到临时文件中,有没有办法选择文件路径和可能的文件名?除了添加文件扩展名外,还可以在没有文件扩展名的情况下保存。
谢谢!
答案 0 :(得分:0)
您只需向urlretrieve
提供位置即可。但是pool.map
似乎不支持函数中的多个args(Python multiprocessing pool.map for multiple arguments)。因此,您可以如此处所述那样进行重构,或者使用不同的多处理原语,例如: Process
:
from multiprocessing import Process
from urllib.request import urlretrieve
urls = ["link", "otherlink"]
filenames = ["{}.html".format(i) for i in urls]
args = zip(urls, filenames)
for arg in args:
p = Process(urlretrieve, arg)
p.start()
在评论中,您说只需要下载1个网址。在这种情况下,这很容易:
from urllib.request import urlretrieve
urlretrieve("https://yahoo.com", "where_to_save.html")
然后该文件将保存在where_to_save.html
中。你当然可以在那里提供完整的路径,例如/where/exactly/to/save.html
。