简单的scrapy命令和中间件
创建爬虫
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命令和中间件的更多相关文章
- 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息
简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...
- Python -- Scrapy 命令行工具(command line tools)
结合scrapy 官方文档,进行学习,并整理了部分自己学习实践的内容 Scrapy是通过 scrapy 命令行工具进行控制的. 这里我们称之为 “Scrapy tool” 以用来和子命令进行区分. 对 ...
- Scrapy命令行工具简介
Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 在最初使用Scrapy时,使用编辑器或IDE手动编写模块来创建爬虫(Spide ...
- Scrapy——5 下载中间件常用函数、scrapy怎么对接selenium、常用的Setting内置设置有哪些
Scrapy——5 下载中间件常用的函数 Scrapy怎样对接selenium 常用的setting内置设置 对接selenium实战 (Downloader Middleware)下载中间件常用函数 ...
- 做一个简单的scrapy爬虫
前言: 做一个简单的scrapy爬虫,带大家认识一下创建scrapy的大致流程.我们就抓取扇贝上的单词书,python的高频词汇. 步骤: 一,新建一个工程scrapy_shanbay 二,在工程中中 ...
- Scrapy命令行调用传入自定义参数
在做爬虫服务化时,有这样一个需求:接口用命令行启动爬虫,但是数据入库时要记录此次任务的task_id. 简单说就是,Scrapy命令行启动时要动态传参进去. 解决方案: 在spider中定义一个构造函 ...
- 实现简单的cp命令
在Linux下实现简单的cp命令.这是<APUE>第四章的其中一道练习题. 其实思路很简单,弄清规则就行了.规则1:源文件必须得存在,否则出错:规则2:目的文件若不存在则创建,若存在,则提 ...
- 使用Scrapy命令行工具【导出JSON文件】时编码设置
Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 使用scrapy命令行工具建立了爬虫项目(startproject),并使用s ...
- python爬虫scrapy命令工具学习之篇三
命令行工具(Command line tools) 全局命令 startproject settings runspider shell fetch view version 项目命令 crawl c ...
随机推荐
- 转载-Apache和Nginx运行原理解析
本文只作为了解Apache和Nginx知识的一个梳理,想详细了解的请阅读文末参考链接中的博文. Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览 ...
- 一致性 hash 算法( consistent hashing )及java实现
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛: 1 基 ...
- async包 ES6 async/await的区别
最基本的async 包 ApCollection.find({}).toArray(function (err, aps) { var num = 0; async.whilst( function ...
- 【Linux_Shell 脚本编程学习笔记二、打印菜单】
综合实例: 打印选择菜单,一键安装Web服务 [root@zuoyan script]# sh menu.sh 1.[install lamp] 2. [install lnmp] 3. [ex ...
- 图论初步-Tarjan算法及其应用
暑假刷了一堆Tarjan题到头来还是忘得差不多. 这篇博客权当复习吧. 一些定义 无向图 割顶与桥 (划重点) 图G是连通图,删除一个点表示删除此点以及所有与其相连的边. 若删除某点u后G不再连通,那 ...
- JS做深度学习3——数据结构
最近在上海上班了,很久没有写博客了,闲下来继续关注和研究Tensorflow.js 关于深度学习的文章我也已经写了不少,部分早期作品可能包含了不少错误的认识,在后面的博文中会改进或重新审视. 今天聊聊 ...
- Zabbix-3.0.3实现微信(WeChat)报警
转自:http://blog.sina.com.cn/s/blog_87113ac20102w7hp.html Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来 ...
- python有关汉字编码问题
python分为:程序编码(python安装程序).文件编码. 查看程序编码方式:sys.getdefaultencoding() 查看文件编码方式:1.import chardet 2. f = ...
- Docker Container开机自动启动
重启策略: 使用在Docker run的时候使用--restart参数来设置. no - Container不重启 on-failure - container推出状态非0时重启 always - 始 ...
- kafka Py客户端
1.pip install kafka-python 2.Producer.py from kafka import KafkaProducer producer = KafkaProducer(bo ...