• 高级深入--day32


    Spider

    Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。

    class scrapy.Spider是最基本的类,所有编写的爬虫必须继承这个类。

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

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

    start_requests() 调用make_requests_from url():生成Requests对象交给Scrapy下载并返回response

    parse() : 解析response,并返回Item或Requests(需指定回调函数)。Item传给Item pipline持久化 , 而Requests交由Scrapy下载,并由指定的回调函数处理(默认parse()),一直进行循环,直到处理完所有的数据为止。

    源码参考
    1. #所有爬虫的基类,用户定义的爬虫必须从这个类继承
    2. class Spider(object_ref):
    3. #定义spider名字的字符串(string)。spider的名字定义了Scrapy如何定位(并初始化)spider,所以其必须是唯一的。
    4. #name是spider最重要的属性,而且是必须的。
    5. #一般做法是以该网站(domain)(加或不加 后缀 )来命名spider。 例如,如果spider爬取 mywebsite.com ,该spider通常会被命名为 mywebsite
    6. name = None
    7. #初始化,提取爬虫名字,start_ruls
    8. def __init__(self, name=None, **kwargs):
    9. if name is not None:
    10. self.name = name
    11. # 如果爬虫没有名字,中断后续操作则报错
    12. elif not getattr(self, 'name', None):
    13. raise ValueError("%s must have a name" % type(self).__name__)
    14. # python 对象或类型通过内置成员__dict__来存储成员信息
    15. self.__dict__.update(kwargs)
    16. #URL列表。当没有指定的URL时,spider将从该列表中开始进行爬取。 因此,第一个被获取到的页面的URL将是该列表之一。 后续的URL将会从获取到的数据中提取。
    17. if not hasattr(self, 'start_urls'):
    18. self.start_urls = []
    19. # 打印Scrapy执行后的log信息
    20. def log(self, me
  • 相关阅读:
    python数据分析及可视化(六)Pandas的对齐运算、混合运算、统计函数、排序函数、处理缺失值及数据的存储与读取
    【Java面试】第三章:P6级面试
    InnoDB 事务
    automake工具基本使用
    基于java+SpringBoot+HTML+MySQL精准扶贫网站的设计与实现
    LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考
    c++的引用和指针
    OMRON欧姆龙Sysmac Studio软件--ESI文件的安装
    git 基础使用(上传,修改上传)
    ArcGIS Pro 中的编辑器
  • 原文地址:https://blog.csdn.net/qq_41813416/article/details/133891511