Python爬虫
上篇,我们已经创建了一个基本的爬虫,用来抓取动态网页的信息。经过测试,爬虫的速度太慢,我们需要改进。这篇我会介绍如何实现一个多线程的python爬虫来提高抓取网页的效率。
基础介绍
很多人都说因为python的GIL (GIL规定每个时刻只能有一个线程访问python虚拟机)限制,不应该用多线程,而应该用多进程。首先,这个观点是大错特错的!如果是一个IO密集型的任务,多线程肯定是work的。所谓IO密集型任务,例如:网络交互,文件的读写。这些不依赖CPU的操作我们是可以通过使用多线程来大大提高程序的效率。
Python一般通过threading库来实现多线程。threading库是对thread库进行包装后的产物。
线程实现
1. 我们可以通过继承threading当中的Thread类。
2. 然后再init里调用Thread的init方法(或者用sup