Scrapy 核心组件之Spiders组件的使用

Spiders 组件是 Scrapy 框架的核心组件,它定义了网络爬虫抓取网站数据的方式,其中包 括抓取的动作,如是否跟进链接,以及如何从网页内容中提取结构化数据。换言之,++Spiders 组件用于定义抓取网页数据的动作及解析网页数据。++

编程梦想家(大学生版)-CSDN博客

那么,Spiders 组件是如何循环抓取所有网页数据的呢?对于使用 Scrapy 编写的爬虫来说,
循环抓取网页数据的流程分为如下 4 个步骤。

(1) 根据初始 URL 创建 Request ,并设置回调函数。当该 Request 设置完毕后返回 Response ,
并将 Response 作为参数传递给该回调函数。需要说明的是,爬虫中初始的 Request 是通过调
用 start_requests() 方法获取的,在该方法中读取 start_urls 中的 URL ,并以 parse() 方法作为回
调函数生成 Request 。
(2) 在回调函数中分析返回的内容。返回的内容主要有 Item 对象、 Request 对象两种形
式。其中, Request 对象会经过 Scrapy 处理,下载相应的内容,并调用设置的回调函数。
(3) 在回调函数中,可以使用 Selectors ( Scrapy 自带的选择器,用于从网页源代码中提
取数据)、 Beautiful Soup 、 lxml 或其他解析器来解析网页数据,并根据解析的数据生成 Item 。
(4) 将 Spiders 返回的 Item 数据经 Item Pipeline 组件处理后存储到数据库或文件中。
虽然以上步骤对大多数 Spiders 都适用,但 Scrapy 仍然为不同的采集需求提供了多种默认
的 Spiders ,例如 10.5 节即将介绍的 CrawlSpider 类。
Scrapy 框架提供了 Spider 作为爬虫的基类,自定义的爬虫需要继承这个类。 scrapy.Spider
类的常用属性和方法介绍如下。

  • name 属性:设置爬虫名称的字符串。由于爬虫名称用于被 Scrapy 定位和初始化一个 爬虫,所以它必须是唯一的。通常情况下,我们会将待抓取网站的域名作为爬虫名称。例如, 抓取域名为 mywebsite.com 网站的爬虫被命名为 mywebsite。
  • allowed_domains 属性:设置爬虫允许抓取的域名列表。
  • start_urls 属性:表示初始 URL 元组或列表。当没有指定 URL 时,爬虫会从该列表中
  • 开始抓取。
  • init()方法:负责初始化爬虫名称和初始 URL 列表。
  • start_requests()方法:负责生成 Requests 对象,交给 Scrapy 下载并返回 Response。 start_requests()方法的返回值是一个可迭代对象,该对象中包含了爬虫抓取的第一个 Request 对象,默认使用初始 URL 列表中的第一个 URL。
  • parse(response)方法:负责解析 Response,并返回 Item 或 Requests(需指定回调函数)。 Item 传给 Item Pipeline 组件进行持久化存储,而 Requests 则交由 Scrapy 下载,并由指定的回 调函数(默认为 parse())处理。之后会持续循环,直到处理完所有的数据为止。
  • log(message[level, component])方法:负责发送日志信息。
相关推荐
qq_3758726920 小时前
14爬虫:scrapy实现翻页爬取
爬虫·scrapy
漫无目的行走的月亮2 天前
基于Python Scrapy的豆瓣Top250电影爬虫程序
爬虫·python·scrapy
猿小猴子9 天前
Python3 爬虫 Scrapy 与 Redis
redis·爬虫·scrapy
黄不逗14 天前
【python系列之scrapy爬虫二】- pycharm中断点调试scrapy
爬虫·python·scrapy
white.tie15 天前
scrapy对接rabbitmq的时候使用post请求
scrapy
猿小猴子16 天前
Scrapy与MongoDB
数据库·scrapy·mongodb
凤枭香16 天前
Python 数据分析用库 获取数据(二)
人工智能·爬虫·python·scrapy
drebander22 天前
爬虫—Scrapy 整合 ChromeDriver 实现动态网页拉取
爬虫·python·scrapy
drebander24 天前
爬虫框架快速入门——Scrapy
爬虫·python·scrapy
猿小猴子24 天前
Python3 爬虫 Scrapy的使用
爬虫·scrapy