Scrapy

原创 2015年07月08日 08:59:00

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

问题描述

运行的时候发现一个问题,抓取的数量不对。例如第一个目录页有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都有条目丢失的问题……

相关文章推荐

Scrapy爬虫(三)——简易动态网页爬虫

Scrapy爬虫(一)——你的第一个Scrapy爬虫 Scrapy爬虫(二)——自定义Item和代理访问的爬虫 如果理解清楚以上这两篇博客,运用scrapy框架爬取一般的网页基本不是什么难题了。可是有...

安装scrapy的相关的依赖库

  • 2017年11月13日 17:45
  • 13.58MB
  • 下载

Scrapy定向爬虫教程(五)——保持登陆状态

本节内容在访问网站的时候,我们经常遇到有些页面必须用户登录才能访问。这个时候我们之前写的傻傻的爬虫就被ban在门外了。所以本节,我们给爬虫配置cookie,使得爬虫能保持用户已登录的状态,达到获得那些...

python35scrapy

  • 2017年09月12日 20:46
  • 54.78MB
  • 下载

Python:Scrapy框架中Item Pipeline组件(项目管道组件)的使用教程

Item Pipeline简介 Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清晰、验证和存储数据。 当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处理...
  • php_fly
  • php_fly
  • 2014年02月20日 21:01
  • 14492

Python Scrapy 官方学习资料

  • 2015年11月26日 10:46
  • 2.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Scrapy
举报原因:
原因补充:

(最多只允许输入30个字)