python + selenium多进程分摊爬虫任务基础
1. 背景
- 现在有这样一个需求:爬取淘宝商品信息,具体的流程是,在搜索栏输入关键字,然后爬取搜索结果列表中的商品信息。
- 分析这个需求会发现具有如下特点:
- 第一,淘宝请求url具有一定的反爬措施,构造起来困难 ——> 应对这种问题的方案就是采用selenium浏览器渲染技术去爬取。
- 第二,实践发现,目前淘宝对这个爬取频率并没有做很大的限制。也就是说,可以在selenium的基础上,加上多进程并发的方式,并行爬取数据,加快爬取速度。
- 第三,为什么不用多线程,而选择多进程?由于python GIL的存在,在CPU密集型的程序当中,使用多线程并不能有效利用多核CPU的优势,因为一个解析器在同一时刻只会有一个线程在执行。所以,python的多进程(multiprocessing)模块可以充分利用硬件的多处理器来进行工作。目前支持UNIX和Windows系统。而且multiprocessing提供了本地和远程的并发性。
2. 环境
- python 3.6.1
- 系统:win7
- IDE:pycharm
- selenium 3.7.0
3. 多进程任务分摊
- 基本思路:
- 第一,开多个进程,并行运行多个chrome浏览器。
- 第二,将所有的关键字放入同一个queue中,其他进程从中获取关键字,进行搜索数据。
import configure
import multiprocessing
import time
d