scrapy信号量
定义
  Scrapy使用信号来通知事情发生。您可以在您的Scrapy项目中捕捉一些信号(使用 extension)来完成额外的工作或添加额外的功能,扩展Scrapy。
  虽然信号提供了一些参数,不过处理函数不用接收所有的参数 - 信号分发机制(singal dispatching mechanism)仅仅提供处理器(handler)接受的参数。
  您可以通过 信号(Signals) API 来连接(或发送您自己的)信号
 
可用信号
engine_started      当Scrapy引擎启动爬取时发送该信号

engine_stopped      当Scrapy引擎停止时发送该信号(例如,爬取结束)

item_scraped        当item被爬取,并通过所有 Item Pipeline 后(没有被丢弃(dropped),发送该信号

item_dropped        当item通过 Item Pipeline ,有些pipeline抛出 DropItem 异常,丢弃item时,该信号被发送

spider_closed       当某个spider被关闭时,该信号被发送。该信号可以用来释放每个spider在 spider_opened 时占用的资源

spider_opened       当spider开始爬取时发送该信号。该信号一般用来分配spider的资源,不过其也能做任何事

spider_idle         当spider进入空闲(idle)状态时该信号被发送

spider_error        当spider的回调函数产生错误时(例如,抛出异常),该信号被发送

request_scheduled   当引擎调度一个 Request 对象用于下载时,该信号被发送

request_dropped     当一个请求,由引擎安排在稍后被下载时,被调度程序拒绝

response_received   当引擎从downloader获取到一个新的 Response 时发送该信号

response_downloaded 当一个 HTTPResponse 被下载时,由downloader发送该信号
信号量使用
import scrapy
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals class JobboleSpider(scrapy.Spider):
name = "jobbole"
allowed_domains = ["blog.jobbole.com"]
start_urls = ['http://blog.jobbole.com/all-posts/']
handle_httpstatus_list = [404] def __init__(self, **kwargs):
self.fail_urls = []
dispatcher.connect(self.handle_spider_closed, signals.spider_closed) def handle_spider_closed(self, spider, reason):
self.crawler.stats.set_value("failed_urls", ",".join(self.fail_urls)) def parse(self, response):
if response.status == 404:
self.fail_urls.append(response.url)
self.crawler.stats.inc_value("failed_url")

最新文章

  1. A couple of notes about .NET Framework 4.6 setup behaviors
  2. ClientScript.RegisterStartupScript 不起作用
  3. 3D变形旋转
  4. [转]change the linux startup logo
  5. 【VNC】Ubuntu14.04LTS下安装VNC View
  6. Linux /proc 的意义
  7. 使用Android SDK Manager自动下载速度慢解决方法
  8. Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
  9. 微信公众号平台接口开发:基础支持,获取access_token
  10. Spring Boot-------JPA基础及查询规则
  11. 现代Java进阶之路必备技能——2019 版
  12. ActiveMq实例
  13. js 判断变量是否为空或未定义
  14. MySQL下创建数据库以及授权用户
  15. 使用SimHash进行海量文本去重[转]
  16. Django项目在linux系统中虚拟环境部署
  17. springboot之定时任务
  18. HTML5 自定义属性
  19. idea terminal 修改为git bash 不支持中文
  20. JS 检测浏览器中是否安装了特定的插件

热门文章

  1. thinkcmf5 iis+php重写配置
  2. [Poj1273]Drainage Ditches(网络流)
  3. Codeforces Round #496 (Div. 3) ABCDE1
  4. Leetcode 872. 叶子相似的树
  5. Android 获取当前应用的版本号+版本号比较
  6. VBA连接到SQL2008需要加上端口号
  7. cf976f Minimal k-covering
  8. c语言入门-01
  9. Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)
  10. [转载]用等高线图(Contour maps)可视化多变量函数