zoukankan      html  css  js  c++  java
  • 简单的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)
    如果存在该函数,则调用该函数创建中间件的实例。
    如果要写这个函数,一定要返回一个中间件的对象。
    这个函数作用:传递信号或者读取配置

     

     

     

  • 相关阅读:
    webpack 模块化 原理
    nodejs 程序 调试
    inno打包教程
    原生xhr、fetch 请求的拦截。mock 技术原理
    package.json 字段说明
    npm 依赖包 的管理【即 node_modules目录的设计原理】
    现在浏览器、webview 中 css的兼容性问题。
    安卓APP(H5本地打包apk应用)
    npm 脚本
    linux系统 离线安装node和nginx(即npm包)
  • 原文地址:https://www.cnblogs.com/kenD/p/12243841.html
Copyright © 2011-2022 走看看