python 查看同步和异步爬虫八个网站所耗时常对比--gevent


```python
# 先来看看同步爬虫八个网站所耗时常
import requests,time
#记录程序开始时间
start=time.time()

url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#当我们一次性爬取的url数量过多的时候,就需要用status_code来过滤掉请求失败的url,否则在后面的数据
#解析中容易报错,从而导致程序运行的终止。当爬取的url数量过多的话,经常会这样处理:
for url in url_list:
    r=requests.get(url)
    if r.status_code!=200:
        continue
        print(url,r.status_code)

end =time.time()
print(end-start)
#结果耗时3s左右





# 接下来看看异步爬虫八个网站所耗费的时间
from gevent import monkey
monkey.patch_all()  #能把程序变成协作式运行,就是可以帮助程序实现异步
import gevent,time,requests

start = time.time()

url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']

def crawler(url):
    r = requests.get(url)
    print(url,time.time()-start,r.status_code)
#
tasks_list = []

for url in url_list:
#遍历url_list。
    # 因为gevent只能处理gevent的任务对象,不能直接调用普通函数,所以需要借助gevent.spawn()来创建任务对象。
    task = gevent.spawn(crawler,url)
    #用gevent.spawn()函数创建任务。注意一点:gevent.spawn()的参数需为要调用的函数名及该函数的参数。
    # 比如,gevent.spawn(crawler,url)就是创建一个执行crawler函数的任务,参数为crawler函数名和它自身的参数url
    tasks_list.append(task)
    #往任务列表添加任务。
gevent.joinall(tasks_list)
#执行任务列表里的所有任务,就是让爬虫开始爬取网站。
end = time.time()
#记录程序结束时间。
print(end-start)
#打印程序最终所需时间


# #总结:用genvent实现多协程爬虫要点:
# 1.定义爬虫函数
# 2.用gevent.spawn()创建任务
# 3.用gevent.joinall()执行任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

York_he

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值