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引擎和调度器将负责到底

  • 相关阅读:
    iOS:分组的表格视图UITableView,可以折叠和展开
    iOS:带主标题、副标题、图像类型的表格视图UITableView
    iOS:多个单元格的删除(方法二):
    iOS:多个单元格的删除(方法一)
    iOS:UITableViewCell自定义单元格
    iOS:删除、插入、移动单元格
    iOS:UITableView表格视图控件
    iOS:UIImageView图像视图控件
    iOS:UIScrollView控件和UIPageControl控件的详解
    淘宝卖家工具推荐
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/11671079.html
Copyright © 2011-2022 走看看