首页 > 其他 > 详细

简单的scrapy命令和中间件

时间:2020-01-30 21:05:11      阅读:99      评论:0      收藏:0      [点我收藏+]
创建爬虫
scrapy genspider 名字 xxx.com
运行爬虫
运行名为usnews的爬虫
scrapy crawl usnews
?
运行爬虫文件
scrapy runspider quote_spider.py
?
保存到json文件里
scrapy runspider quote_spider.py -o quotes.json
?
保存成csv文件
scrapy runspider quote_spider.py -o quotes.csv -t csv
调试爬虫
进入scrapy控制台,使用的是项目环境
scrapy shell
?
带一个url,将自动请求这个url,并在请求成功后进入控制台
scrapy shell http://xxx.com
?
进入到控制台以后可以使用一下函数(常用命令)
fetch(): 请求url或者Response对象
注意:请求成功以后会自动将当前作用域内的request和response对象重新赋值
?
view(): 用浏览器打开response对象的网页
?
shelp(): 打印出帮助信息
?
spider(): 相应的Spider类的实例
?
settings: 保存所有配置信息的Settings对象
?
crawler: 当前Crawler对象

中间件

process_request
在response对象传往downloader的过程中被调用。当返回不同类型的值的时候,行为也不一样。
?
返回值:None
行为:一切正常,继续执行其他中间件链
?
返回值:Response
行为:停止调用其他process_request和process_exception函数,也不再继续下载该请求,然后执行调用process_response的流程
?
返回值:Request
行为:不再继续调用其他process_request函数,交给调度器重新安排下载
?
返回值:IgnoreRequest
行为:process_exception函数被调用,如果没有此方法,则request.errback会被调用,如果errback也没有,则此异常会被忽略,甚至连日志都没有
process_response
在将下载结果返回给engine过程中
?
返回值:Response
行为:继续调用其他中间件的process_response
?
返回值:Request
行为:不再继续调用其他process_request函数,交给调度器重新安排下载
?
返回值:IgnoreRequest
行为:request.errback会被调用,如果errback也没有,则此异常会被忽略,甚至连日志都没有
process_exception
在下载过程中出现异常(DNS,timeout,网络连接不上等异常),或者在process_request中抛出IgnoreRequest异常的时候调用
?
返回值:None
行为:
?
返回值:Response
行为:继续调用其他中间件的process_response
?
返回值:Request
行为:不再继续调用其他process_request函数,交给调度器重新安排下载
?
from_crawler(cls, crawler)
如果存在该函数,则调用该函数创建中间件的实例。
如果要写这个函数,一定要返回一个中间件的对象。
这个函数作用:传递信号或者读取配置

 

 

 

简单的scrapy命令和中间件

原文:https://www.cnblogs.com/kenD/p/12243841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!