通过Python进行协程间通信,大大加速爬取效率。
前言
是这样的,在之前的爬虫版本中,我们通过并发技术(python协程只是并发)。实现快速爬取小说的效果。
将速度提高为原来的几百倍了。但是却由于之前的多协程之间的通信,都是采用写入硬盘之后,再相互通信来实现的,所以,速度上还是存在一定的缺陷。
最新
在最新的版本中,我们采用多协程技术,采用在内存通信,这样来传递爬取的数据,之后,再来组合成为新的章节,这样就可以做到了对于之前版本的提速效果。而且需要代码量也下降了10行左右。
还是跟之前的版本一样目标小说网站只能是http://www.biquge.com.tw/这个网站下的小说的目录页
只要把目录页对应的小说的网址丢到main函数中的url里面,就可以实现了小说爬取。
小调整tips:
当然啦,根据自己的需求,可以试试看改改BuildGevent函数的step变量。这个表示每次发多少个协程。注意,最多是1200个。
这个设置,可以自己考虑,根据不同的设备情况,网络效果,对方服务器的稳定程度来进行判断。
import requests
import os
import gevent
from gevent import monkey
import random
import re
from lxml import etree
monkey.patch_all(select=False)
from urllib import parse
import time
IPs = [{
'HTTPS': 'HTTPS://182.114.221.180:61202'},
{
'HTTPS'