Scrapy

来源:互联网 发布:淘宝生产许可证编号 编辑:程序博客网 时间:2024/04/29 19:53

实现一个功能很简单的爬虫:目标类似论坛,抓取第一个目录页-》提取所有页面-》找出下一个目录页地址-》提取下一目录页的所有页面;

问题描述

运行的时候发现一个问题,抓取的数量不对。例如第一个目录页有15条,第二个目录页有20条,那么最终应该抓取到35条,但是实际发现最终抓取到的条目是随机的……
试着分开抓,第一次只抓第一个目录页,返回了15条没错;第二次只抓第二个目录页,返回了20条没错;一起抓的时候,返回结果依然随机,25-35之间都有可能。

原因

找了半天发现代码没什么问题,由于之前将log_level设为了“warning”,因此也没有给出什么提示。将其改为默认,发现问题了。
在抓取具体条目时,返回了很多503错误,而scrapy会对每个503错误尝试3次,如果依然出错就直接扔掉这个页面。看了一下scrapy最后的stats,发现503有19个之多……
按此推理,应该是访问太频繁被服务器拒了!

解决办法

首先想的是限制并发数量,在settings.py里修改,加上:

CONCURRENT_REQUESTS = 1

后边的数值是并发限制,发现只有修改为1的时候才能完全不会出错,即使是2都有条目丢失的问题……

0 0
原创粉丝点击