Scrapy学习-21-信号量
2024-09-02 19:55:26
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")
最新文章
- A couple of notes about .NET Framework 4.6 setup behaviors
- ClientScript.RegisterStartupScript 不起作用
- 3D变形旋转
- [转]change the linux startup logo
- 【VNC】Ubuntu14.04LTS下安装VNC View
- Linux /proc 的意义
- 使用Android SDK Manager自动下载速度慢解决方法
- Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
- 微信公众号平台接口开发:基础支持,获取access_token
- Spring Boot-------JPA基础及查询规则
- 现代Java进阶之路必备技能——2019 版
- ActiveMq实例
- js 判断变量是否为空或未定义
- MySQL下创建数据库以及授权用户
- 使用SimHash进行海量文本去重[转]
- Django项目在linux系统中虚拟环境部署
- springboot之定时任务
- HTML5 自定义属性
- idea terminal 修改为git bash 不支持中文
- JS 检测浏览器中是否安装了特定的插件
热门文章
- thinkcmf5 iis+php重写配置
- [Poj1273]Drainage Ditches(网络流)
- Codeforces Round #496 (Div. 3) ABCDE1
- Leetcode 872. 叶子相似的树
- Android 获取当前应用的版本号+版本号比较
- VBA连接到SQL2008需要加上端口号
- cf976f Minimal k-covering
- c语言入门-01
- Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)
- [转载]用等高线图(Contour maps)可视化多变量函数