阅读量:4
在Python的requests库中,可以使用concurrent.futures模块中的ThreadPoolExecutor来实现多线程抓取。以下是一个简单的示例:
import requests
from concurrent.futures import ThreadPoolExecutor
def fetch(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
urls = [
'https://www.example.com',
'https://www.example2.com',
'https://www.example3.com',
# 更多URL...
]
# 使用线程池来执行抓取任务
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(fetch, urls))
# 处理结果
for result in results:
if result:
print("成功获取到内容:", result[:100]) # 打印前100个字符
else:
print("获取失败或内容为空")
在这个示例中,我们首先定义了一个fetch函数,用于发送HTTP请求并返回响应内容。然后,我们创建了一个urls列表,其中包含要抓取的URL。接下来,我们使用ThreadPoolExecutor创建一个线程池,并设置最大工作线程数为5。最后,我们使用executor.map()方法将fetch函数应用到urls列表中的每个URL,并将结果存储在results列表中。最后,我们遍历results列表并处理每个结果。
以上就是关于“如何在requests中实现多线程抓取”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm