分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

协程实现爬虫的例子主要优势在于充分利用IO时间去请求其他的url

发布时间:2023-09-06 02:20责任编辑:赖小花关键词:url爬虫
# 分别使用urlopen和requests两个模块进行演示# import requests # 需要安装的# from urllib.request import urlopen## url = ‘http://www.baidu.com‘### res1 = urlopen(url) # urlopen,获取到页面请求对象# res2 = requests.get(url) ???# requests.get获取到请求对象# print(res1)# print(res2)# print(res1.read().decode(‘utf-8‘)) ?# 获取到页面源码,有缩进的# print(res2.content.decode(‘utf-8‘)) # 获取到页面源码,无缩进的# 协程实现爬虫的例子 ???# 这里只去处理请求过程中的IO等待,这样请求一个URL的时候,在URL还未返回的这个阶段就发生了IO事件,此时就会发生协程切换去获取另外一个URL,如此协程就充分巧妙利用了程序任务中的IO时间from gevent import monkeymonkey.patch_all() ?# 打猴子补丁,使IO操作能被协程发现,从而使得协程能够协程切换工作import geventfrom urllib.request import urlopendef get_url(url): ???response = urlopen(url) ???content = response.read().decode(‘utf-8‘) ???return len(content)if __name__ == ‘__main__‘: ???url_list = [‘http://www.baidu.com‘, ‘http://www.sogou.com‘, "http://www.cnblogs.com"] ???g_lst = [] ???for url in url_list: ???????g = gevent.spawn(get_url, url) ???????g_lst.append(g) ???gevent.joinall(g_lst) ??# 阻塞等待协程任务执行结束 ???for g in g_lst: ???????print(g.value) ?# 协程对象.value能得到任务的返回值

协程实现爬虫的例子主要优势在于充分利用IO时间去请求其他的url

原文地址:https://www.cnblogs.com/whylinux/p/9866033.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved