这段代码正在生成13k个URL,然后检查response=200。我必须检查每一个,因为没有其他方法知道它们是否存在。如果是,则继续下载图像
它还会检查文件夹中是否已存在图像。它正在工作,但需要几个小时才能完成
我正在使用请求,shutil
,os
和tqdm
。我是python新手,我一直在研究和发现asyncio
和aiohttp
,看了几本教程,但没有成功
def downloader(urls):
for i in tqdm(urls):
r = requests.get(i, headers=headers, stream=True)
if r.status_code == 200:
name, path = get_name_path(i)
if check_dupe(name) == False:
save_file(path, r)
folder_path = create_dir()
urls = generate_links()
downloader(urls)
您还可以
python ray
您可以按照以下步骤操作: 创建n个工人,例如10个工人
将URL分发到不同的列表(),例如n_数量的工作人员。您可以使用numpy并使用np.arraysplit函数来实现这一点
从…开始
做射线遥控器
通过这样做,您可以将工作负载分配给10个不同的工人。您可以根据可用资源分配任意数量的工作人员
您可以在此处查看更多详细信息:https://ray.io/
异步IO/aiohttp解决方案的示例
将URL拆分为100个组,异步请求每个组
注意这一点,因为它会很快处理请求,您可能最终会受到费率限制和/或不受欢迎。(根据api的不同,您可能还必须限制请求的速度)
相关问题 更多 >
编程相关推荐