zoukankan      html  css  js  c++  java
  • Python爬虫连载17-ItemPipeLine、中间件

    一、ItemPipeLine

    1.爬虫提取出的数据存入item之后,item中保存的数据需要进一步处理,比如:清洗,去重,存储等

    2.pipeline需要process_item函数

    (1)process_item​:spider提出来的item作为参数出入,同时传入的还有spider;此方法是必须要实现的​;必须返回一个item对象,被丢弃的item不会被之后的pipeline处理

    (2)__init__:构造函数

    进行一些必要的参数初始化

    (3)open_spider(spider)

    spider对象被开启的时候调用

    (4)close_spider(spider)

    spider对象被关闭的时候调用

    3.Spider

    (1)对应的是文件夹spiders下的文件

    (2)__init__:初始化爬虫的名称,start_urls列表

    (3)start_requests:生成Requests对象嫁给Scrapy下载并返回response

    (4)parse:根据返回的response解析出相应的item,item自动进入到pip​eline;如果需要,解析出url,url自动交给requests模块,一直循环下去

    (5)start_request​:此方法仅能被调用一次,读取start_urls内容并启动循环过程

    (6)​name:设置爬虫的名字

    (7)start_urls:设置开始第一批爬取的url

    (8)allow_​domains:spider允许爬取的域名列表

    (9)start_request(self):只被调用一次

    (10)parse

    (11)log:日志记录

    二、中间件

    1.定义:中间件是处于引擎和下载器中间的一层组件

    2.作用:对发出的请求和返回的结果进行预处理

    3.​数量:可以有很多个,被按顺序加载执行

    4​.位置:在middlewares文件中,需要在settings中设置以便生效

    5.编写十分简单

    6.必须实现以下一个或者多个方法

    (1)process_request(self,request,spider)

    在request通过的时候​被调用;必须返回None或者Request或Response或raise IgnoreRequest;

    None:scrapy将继续处理该request

    Request:scrapy将停止调用process_request并冲洗调度返回的request

    Response:scrapy将不会调用其他的process_request或者process_exception,直接将该response作为结果同时会调用process_response函数

    (2)process_response(self,request,response,spider)

    跟process_request大同小异;每次返回结果的时候会自动调用;可以有多个,​按顺序调用。

    三、源码

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    WINCE串口打印信息的屏蔽与打开
    WINCE系统时间设置
    WINCE调试常见错误
    今天开始研究arcgisserver
    今天开始,放弃项目管理,做技术了
    java数据库连接
    [转]建一个XMLHttpRequest对象池
    Linux下jsp开发环境,apache,tomcat服务器配置过程
    div+css布局漫谈
    新图纸总结
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12571702.html
Copyright © 2011-2022 走看看