zoukankan      html  css  js  c++  java
  • spider类

    1.主要用到的函数及调用的顺序为:

    __init__():初始化爬虫名字,和start_urls列表

    start_requests()调用make_requests_from_url():生成request对象交给scrapy下载并返回response

    parse():解析response,并返回Item或requests(需指定回调函数)。Item传给Item pipeline持久化,而requests交由scrapy下载,并由指定的回调函数处理,一直循环,直到处理完所有的数据。

    dont_filter=True会忽略域组的限制(就是忽略http加入host主机的一部分,域名中没有http)

    parse()方法的工作机制

    1.因为使用的yield而不是return,parse函数会被当作一个生成器使用,scrapy会逐一获取parse方法中生成的结果,并判断该结果是什么类型

    2.如果request则加入爬取队列,如果是item类型则使用pipeline处理,其他类型则返回错误信息

    3.scrapy取到第一部分的request不会立马去发送这个request,只是把这个request放到队列里,然后接着从生成器里获取

    4.取尽request,再获取第二部分的item,就会放到对应的pipeline处理

    5.parse()方法作为回调函数callback赋值给了request,指定parse()方法来处理这些请求scrapy.Request(url,callback=self.parse)

    6.Request对象经过调度,执行生成scrapy.http.resonse()的响应对象,并送回给parse()方法,直到调度器中没有Request(递归)

    7.取尽之后,parse工作结束,引擎根据队列和pipeline中的内容去执行相应的操作

    8.程序在取得各个页面的items前,会先处理完之前所有的request队列里的请求,然后再提取item

    9.scrapy引擎和调度器将负责到底

  • 相关阅读:
    javascript 备忘 细节 相关
    内存泄漏
    css相关 细节 优化 备忘
    nodeType
    事件冒泡 模型
    两个感叹号作用
    非冒泡事件
    DOM 对象
    Quartz2D 之 绘制文本
    Voilin 与 乐谱
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/11671079.html
Copyright © 2011-2022 走看看