课程笔记3:Scrapy框架——Spider的用法

news/2024/7/19 12:44:13 标签: 爬虫, pycharm, 搜索引擎

Spider的三个核心任务:

  • 定义链接配置
  • 定义抓取逻辑(爬取网站的动作)
  • 定义解析逻辑(分析爬取到的网页)

Spider的运行流程:

  1. 以初始URL初始化Request,并设置回调函数。当该Request成功请求并返回时,生成一个Response(这个Response将作为参数传给该回调函数)。
  2. 在回调函数内分析返回的网页内容,返回的结果有两种形式:item和Request。
  3. Item:如果解析到有效的结果,会以字典或Item对象的形式返回。接着就可以将数据保存下来(可通过Feed Exports等组件将返回结果存入文件;也可以通过设置Pipeline实现数据的处理+保存。)。
  4. Request:如果解析到的是下一页的链接,那么就可以利用此链接构造新的Request并设置新的回调函数。接着,会生成新的Response(这个Response也会作为参数传给新指定的回调函数)。在回调函数中,可以再次使用选择器来分析等到新的网页内容,并根据分析的数据生成Item。

总结:定义好初始URL,引擎会自动生成初始Response。在回调函数中,通过初始Response拿到页面里面的内容字段和翻页字段,接着整理内容字段以item形式返回,另外整理翻页字段以Request形式返回。引擎拿到新的Request会生成新的Response,如此循环往复。

Spider类:

我们定义的Spider一般都继承自scrapy.spiders.Spider——这个类是最简单最基本的Spiders类,其他Spider必须继承自这个类。

基础属性

name:爬虫名称,定义Spider名字的字符串(必须唯一,一般为网站域名)

allowed_domains:允许爬取的域名(即白名单,为可选配置)

start_urls:起始URL列表(如果没有实现start_requests()方法,默认从这里开始抓取)

custom_settings:是一个字典,是专属于本Spider的配置(此设置会覆盖全局的设置;必须在初始化前被更新;必须定义成类变量)

crawler:由from_crawler()方法来设置,代表的是本Spider类对应的Crawler对象(Crawler对象包含了很多项目组件,可以用来获取项目配置信息,如Settings)

settings:这是一个Settings对象,利用它可以直接获取项目的全局设置变量。

常用方法

start_requests():用于生成初始请求,必须返回一个可迭代对象;默认使用start_urls里面的URL来构造Request(请求方式为GET,如果想要以POST方式访问站点,可以直接重写这个方法,发送POST请求时使用FormRequest即可)

parse():当Response没有指定回调函数时,该方法会默认被调用(返回一个包含Request或Item的可迭代对象)

closed():Spider关闭时,该方法会被调用(一般会定义释放资源的一些操作或其他收尾操作)


http://www.niftyadmin.cn/n/764762.html

相关文章

课程笔记4:Scrapy框架——下载中间件爬虫中间件的用法

下载中间件(Downloader Middleware) ps:下简称DM 这是处于Scrapy的Request和Response之间的处理模块。 DM在整个架构中起作用的两个位置: Engine把(从Schedule获取的)Request发送给Downloader的过程中&a…

Acwing677. 找零

ZZ 国的货币系统包含面值 1 元、4 元、16 元、64 元共计四种硬币,以及面值 1024 元的纸币。 现在小 Y 使用 1024 元的纸币购买了一件价值为 N 的商品,请问最少他会收到多少硬币。 输入格式 共一行,包含整数 N。 输出格式 共一行&#xf…

知识补充1:MongoDB的基本使用方法

NoSQL(Not Only SQL),泛指非关系型数据库。NoSQL是基于键值对的,不需要经过SQL层的解析,数据之间没有耦合性,性能非常高。 MongoDB是有C语言编写的非关系型数据库,是一个基于分布式文件存储的开…

P1181 数列分段 Section I

数列分段 Section I - 洛谷 /** Description: To iterate is human, to recurse divine.* Autor: Recursion* Date: 2022-04-11 14:35:08* LastEditTime: 2022-04-11 14:49:15*/ #include <bits/stdc.h> #define LL long long using namespace std; const int maxn 1e…

知识补充2:Elasticsearch的基本使用(Windows+Python)

1.基本特性 一个分布式的实时文档存储库&#xff0c;每个字段都可以被索引与搜索&#xff1b; 一个分布式的实时分析搜索引擎&#xff1b; 能胜任上百个服务节点的扩展&#xff0c;并支持PB级别的结构化或者非结构化数据。 2.相关概念 近实时&#xff08;Near Real Time&am…

课程笔记5:Scrapy框架——Item Pipeline的用法

Item Pipeline(项目管道)。Spider解析完Response就会产生Item,Item就会被Engine传递到Item Pipeline,被定义的Item Pipeline组件就会顺次被调用,完成一连串的处理过程: 清洗HTML数据验证爬取数据,检查爬取字段查重并丢弃重复内容将爬取结果存储到数据库中核心方法 必须…

课程笔记6:Scrapy框架——Extension的使用

Extension(扩展)简介 Scrapy提供了一些Extension机制,可以让我们添加和扩展一些自定义的功能(监听Scrapy运行过程中的信号,在发生某个事件时,执行我们自定义的方法)。 Scrapy内置的一些Extension: LogStats:用于记录基本的爬取信息,比如爬取的页面数量、提取的Ite…

Linux笔记1:Linux命令行基础

基本概念 Shell与Bash: 用户>服务程序>系统调用接口>内核>硬件 硬件设备由系统内核直接管理,但由于内核的复杂性太高,在访问时存在较大的风险,因此用户不能直接访问内核。Shell是终端程序的统称,充当了人与内核(硬件)的“翻译官”,会根据用户的命令去调用…