故障分析系列(01) —— scrapy爬虫速度突然变慢原因分析

故障分析系列(01) —— scrapy爬虫速度突然变慢原因分析

1. 问题背景

  • 在所有环境都没变的情况下,scrapy爬虫每天能爬取的数据量从3月5号开始急剧减少,后面几天数据量也是越来越少。
    这里写图片描述

2. 环境

  • 系统:win7
  • python 3.6.1
  • scrapy 1.4.0
  • 网络:电信100Mb
  • 代理:阿布云(服务商是阿里云)
  • 爬取站点:amazon,amztracker

3. 排查步骤

3.1. 抓取scrapy爬虫的Log

# 文件 settings.py中
import datetime

LOG_LEVEL = 'DEBUG'		# log等级设置为debug模式
startDate = datetime.datetime.now().strftime('%Y%m%d')
LOG_FILE = f"redisClawerSlaver_1_log{startDate}.txt"	# 将log写入文件中

# 小技巧:因为debug模式下,一天下来,log会非常大,用Notepad++无法打开,可以使用UltraEdit来打开
  • 后来分析Log,搜索failed, 发现了大量的 timeout error,占到了错误的九成,而且这两个站点的链接都有:

  • 大量的Timeout会导致大量的重试,而且每个timeout,都要等待20s,才返回错误,所以极大的拉慢了爬虫的速度。
    这里写图片描述

  • 结论1:所以大胆猜测可能有几个原因:

  • 第一,本地网络变慢。

  • 第二,爬取的站点发生了变化,包括爬取的内容发生了变化。

  • 第三,阿布云代理故障。

  • 第四,爬虫错误。

  • **思考与完善:**其实在这一步,应该做好详细的error统计的,记录在数据库中,这个后期要完善起来。补充一下,形如此类:

# 文件 spider.py中
from scrapy.spidermiddlewares.httperror import HttpError
from twisted.internet.error import TimeoutError, TCPTimedOutError, DNSLookupError, ConnectionRefusedError

yield response.follow(
    url=re.sub(r'page=\d+',f'page={page}',url,count=1),
    meta={
   'dont_redirect':True,'key'
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值