python爬虫多数都是运行在linux内核的服务器上的,多进程比多线程更合适,调度开销差不多,但是进程性能更好。
爬虫不是服务器交互,一般情况下提升几倍效率即可。
直接来看看代码
1 | #coding:utf-8 |
这次我们准备爬取的是安居客的网站。
先从主代码开始,startUrl,使用requests和beautifulsoup进行解析。获取地址之后,进入main函数。
multiprocessing 创建一个进程池,进程个数为cpu内核数,一般写4或6个即可。
apply_async函数从进程池中取出一个进程执行func,args为func的参数,我们这段代码不断地从进程池中取出进程去执行我们的detailPage方法。当然,也可以采用下面这种方式:
pool.map(detailPage, urls)
接着就是关闭进程池还有wait进程池中的全部进程。