【转】Python爬虫(5)_性能相关
2017-11-09 16:11
393 查看
爬虫性能相关
一 背景知识
爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,采用串行的方式执行,只能等待爬取一个结束后才能继续下一个,效率会非常低。需要强调的是:串行并不意味着低效,如果串行的都是纯计算的任务,那么cpu的利用率仍然会很高,之所以爬虫程序的串行低效,是因为爬虫程序是明显的IO密集型程序。
关于IO模型详见链接:http://www.cnblogs.com/linhaifeng/articles/7454717.html
那么该如何提高爬取性能呢?
二 同步、异步、回调机制
1、同步调用:即提交一个任务后就在原地等待任务结束,等到拿到任务的结果后再继续下一行代码,效率低下from tornado.httpclient import AsyncHTTPClient from tornado.httpclient import HTTPRequest from tornado import ioloop def handle_response(response): """ 处理返回值内容(需要维护计数器,来停止IO循环),调用 ioloop.IOLoop.current().stop() :param response: :return: """ if response.error: print("Error:", response.error) else: print(response.body) def func(): url_list = [ 'http://www.baidu.com', 'http://www.bing.com', ] for url in url_list: print(url) http_client = AsyncHTTPClient() http_client.fetch(HTTPRequest(url), handle_response) ioloop.IOLoop.current().add_callback(func) ioloop.IOLoop.current().start()
Tornado
相关文章推荐
- 爬虫性能相关
- 爬虫性能:NodeJs VS Python
- python网络爬虫实战3——抓取新闻内文相关信息
- python 爬虫及相关
- 实践项目十:爬取百度百科Python词条相关1000个页面数据(慕课简单爬虫实战)
- 关于python性能相关测试cProfile库
- Python 爬虫相关问题
- python 多线程、多进程、协程性能对比(以爬虫为例)
- Java爬虫爬取python百度百科词条及相关词条页面
- [Python爬虫]爬取百度百科python相关的1000个页面
- Python静态网页爬虫相关知识
- Python爬虫之三种网页抓取方法性能比较
- 爬虫必备—性能相关(异步非阻塞)
- python爬虫相关 官网及文档地址
- 【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
- 【Python爬虫学习笔记(1)】urllib2库相关知识点总结
- 【python爬虫】抓取B站视频相关信息(一)
- 【python爬虫】抓取B站视频数据及相关信息(二)
- python采用 多进程/多线程/协程 写爬虫以及性能对比,牛逼的分分钟就将一个网站爬下来!
- 爬虫性能相关知识点