提高scrapy的爬取效率

增加并发:

默认scrapy开启的线程数为32个,可以适当进行增加,在seeting配置文件中修改councurrent_requests=100

降低日志等级:

在运行scrapy运行时,会有大量日志输出,为了减少cpu的使用率,可将日志等级设置为log=errorlog=info

禁用cookie:

如果不是真的需要使用cookie,可以直接禁用cookie,提升爬取效率。cookie_enabled=false

禁止重试:

对失败的HTTP请求重新请求会减慢爬取速度,可以禁止重试。retry_enabled=false

减少下载超时:

对一个非常慢的链接进行爬取会很卡,减少下载超时,这样的链接会被放弃,提升爬取的效率。download_timeout=10 超时时间10S

关于增量式爬虫

是指对指定的页面进行数据爬取后,待页面数据更新后,能再次对页面进行爬取,且只会爬取新的数据,已经爬取的数据不会操作。

重点在于不会爬取重复的数据,这就会用到数据指纹了。

通常增量式爬取的内容表现为:

1.爬取主页面链接中详情页面的数据,会对详情页面进行url去重判断。

以redis为例:

URL去重:电影详情信息

向redis中写入一条新数据,其返回值为1,表示新数据可以存储。失败返回值为0,表示已存在相同数据。

直接判断URL是否已存在,以键值对方式插入Redis,返回值若为1,对当前URL手动发送请求抓取数据,反之提示无新数据

文本去重:新闻头条

对文本去重,无法直接判断URL,都在同一个链接下,刷新就会有新数据。

通常会选择文本标题和作者等动态文本拼接字符串,用hash sha256或者其他不可逆加密方式,获取文本唯一标识,

存储到Redis中,如再次添加相同文本,则密文必然重复,返回值必定为0,不予发送请求即可。

原文地址:https://www.cnblogs.com/wen-kang/p/10972806.html