Scrapy 学习篇(一)

Scrapy是一款强大的Python爬虫框架,采用Twisted异步网络库,适用于高效数据抓取。本文介绍其架构,包括引擎、调度器、下载器、爬虫、管道及中间件,解析制作流程,从项目创建到数据提取与存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy 框架

  • Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

  • 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。

  • Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

 

Scrapy架构图(绿线是数据流向):

  • Scrapy Engine(引擎): 总指挥,负责SpiderItemPipelineDownloaderScheduler中间的通讯,信号、数据传递等,scrapy已经实现

  • Scheduler(调度器): 一个队列,存放引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎,scrapy已经实现

  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,scrapy已经实现

  • Spider(爬虫):处理引擎发过来的Responses,提取数据和url,提交给引擎,需要手写

  • Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方,需要手写

  • Downloader Middlewares(下载中间件):可以自定义扩展下载功能的组件,比如设置代理

  • Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎Spider中间通信的功能组件(比如过滤进入Spider的Responses和自定义从Spider出去的Requests)

注意!只有当调度器中不存在任何request了,整个程序才会停止,(也就是说,对于下载失败的URL,Scrapy也会重新下载。

制作 Scrapy 爬虫 一共需要4步:

  • 创建一个scrapy项目

scrapy startproject 项目名

  • 生成一个爬虫

scrapy genspider 爬虫名 域名

  • 提取数据

完善spider,使用xpath等方法

【注意:scrapy.spider中parse方法用于处理start_url对应的响应,方法名不能更改】

  • 保存数据

pipeline中保存数据【多个pipeline时,为使数据能够在pipeline中进行传递,需在每个pipeline中return item】

【注意:pipeline中process_item方法名不能更改,否则无法通过管道进行处理】

补充笔记

  • extract():返回一个包含所有字符串数据的列表;extract_frist()返回列表中的第一个字符串
  • 需要爬取的url地址必须要处于allow_domain下的链接
  • response.xpath()返回的时一个含有selector对象的列表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值