分享好友 最新动态首页 最新动态分类 切换频道
【0基础学爬虫】爬虫框架之 feapder 的使用
2024-12-26 13:45

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫。

学习爬虫的过程中,一般都会接触到一些框架,常见的比如 Scrapy、Pyspider 等等,不同的框架都有着各自的特点。不过就上述两款爬虫框架而言,Pyspider 久未维护,且安装到使用的过程较为坎坷;Scrapy 生态良好,功能丰富,但是对于初学者来说,学习成本相对较高。feapder 框架近年来较为火热,正好也有群友提到了

因此,本期将讲解一款上手更为简单,功能同样强大的爬虫框架 —— feapder。

feapder 是一款上手简单,功能强大的 Python 爬虫框架。内置 AirSpider、Spider、TaskSpider、BatchSpider 四种爬虫解决不同场景的需求

  • AirSpider:轻量级爬虫,适合简单场景、数据量少的爬虫
  • Spider:分布式爬虫,基于 Redis,适用于海量数据,并且支持断点续爬、自动数据入库等功能
  • TaskSpider:任务型爬虫,支持对接任务表,如 mysql、redis 等
  • BatchSpider:分布式批次爬虫,主要用于需要周期性采集的爬虫。

feapder 支持断点续爬、监控报警、浏览器渲染、海量数据去重等功能。更有功能强大的爬虫管理系统 Feaplat 为其提供方便的部署及调度。

feapder 官方资料

GitHub:https://github.com/Boris-code/feapder

官方文档:https://feapder.com/

官方公众号:feader爬虫教程

官方框架流程图

模块说明

流程说明

根据上文框架流程图,按流程序号分析功能

  1. spider 调度 start_request 生产任务
  2. start_request 下发任务到 request_buffer 中
  3. spider 调度 request_buffer 批量将任务存储到任务队列数据库中
  4. spider 调度 collector 从任务队列中批量获取任务到内存队列
  5. spider 调度 parser_control 从 collector 的内存队列中获取任务
  6. parser_control 调度 request 请求数据
  7. request 请求与下载数据
  8. request 将下载后的数据给 response,进一步封装
  9. 将封装好的 response 返回给 parser_control(图示为多个 parser_control,表示多线程
  10. parser_control 调度对应的 parser,解析返回的 response(图示多组 parser 表示不同的网站解析器
  11. parser_control 将 parser 解析到的数据 item 及新产生的 request 分发到 item_buffer 与 request_buffer
  12. spider 调度 item_buffer 与 request_buffer 将数据批量入库。

环境

  • Python 3.6.0+
  • Works on Linux,Windows,macOS

安装

① 精简版

 

不支持浏览器渲染、不支持基于内存去重、不支持入库 mongo。

② 浏览器渲染版

 

不支持基于内存去重、不支持入库 mongo。

③ 完整版

 

支持所有功能。

常见安装问题

https://feapder.com/#/question/%E5%AE%89%E8%A3%85%E9%97%AE%E9%A2%98

安装成功,查看版本及可用命令

feapder 支持 、、 及 四种命令, 查看使用帮助。

详细资料

https://feapder.com/#/command/cmdline

AirSpider

轻量爬虫,学习成本低,面对一些数据量较少,无需断点续爬,无需分布式采集的需求,可采用此爬虫。

① 创建爬虫项目

命令如下

 
 

和 Scrapy 一样,创建新项目时,会自动生成一系列的文件和目录结构,有助于理解与使用框架

相关文件简介

  • items: 文件夹存放与数据库表映射的 item
  • spiders: 存放爬虫脚本的文件夹
  • CHECK_DATA.md:数据审核建议
  • main.py: 运行入口(附代码样例
  • setting.py: 详细的框架配置文件。

② 创建爬虫程序

命令如下

 

选择需要创建的爬虫模板,按上下键更换模版,这里选择 AirSpider 模板,回车即可创建成功

代码样例如下

 
  • feapder.AirSpider:轻量爬虫基类
  • start_requests:初始任务下发入口
  • feapder.Request:基于 requests 库类似,表示一个请求,支持 requests 所有参数,同时也可携带些自定义的参数
  • parser:数据解析函数
  • response:请求响应的返回体,支持 xpath、re、css 等解析方式。

运行结果

可以看到,默认会输出请求链接(url)、请求方式(method)以及请求头相关信息(args,不需要的可以跟进到 文件中,将 log 部分注释掉即可

③ AirSpider 的基本使用方法

如果需要解析的函数不止一个的话,可以自定义解析函数(默认失败重试 10 次)、下载中间件(cookies、headers 等)以及失败重试等等,囊括在下面的代码样例中

 

运行结果

feapder 框架内置了能够停止整个爬虫程序的方法

 

④ 数据入库

feapder 框架内封装了 、,与 pymysql 不同的是,MysqlDB 使用了线程池,且对方法进行了封装,使用起来更方便

  • 线程池:MysqlDB 使用了线程池来管理数据库连接。这意味着在执行数据库操作时,可以复用现有的数据库连接,而不是每次操作都新建一个连接,从而提高了性能和效率,特别是在高并发场景下。
  • 方法封装:MysqlDB 对常用的数据库操作进行了封装,使得开发者可以更简便地进行增删改查等操作,而不需要直接编写繁琐的 SQL 语句。

MysqlDB 具有断开自动重连特性,支持多线程下操作,内置连接池,最大连接数 100。同时,封装了增删改查等方法,使相关操做更为方便,可自行测试。

MysqlDB:https://feapder.com/#/source_code/MysqlDB

RedisDB 支持普通模式(单节点)、哨兵模式、集群模式

  • 哨兵模式:RedisDB 支持 Redis 的哨兵模式(Sentinel,这是一种用于实现高可用性的 Redis 配置,可以自动监测主从实例的状态并在主实例发生故障时自动完成主从切换。
  • 集群模式:RedisDB 也支持 Redis 集群模式,这是一种用于分布式存储的 Redis 配置,可以将数据分布在多个 Redis 节点上,从而实现水平扩展和高可用性。

RedisDB:https://feapder.com/#/source_code/RedisDB

基本使用方法如下

 

⑤ 线程数配置

框架默认的线程数为 1,但在正常业务中,基本不可能只采用单线程的工作方式进行数据采集,feapder 的多线程配置有几种方式

1、在启动函数中传递线程数

 

2、在配置文件 setting.py 中更改对应的配置项

 

3、 在程序脚本中,使用类变量 自定义配置项

 

在程序脚本中自定义配置项,优先级会大于在 setting.py 中设置。

feapder 框架还支持浏览器(Chrome、Edge、PhantomJS、Firefox)渲染采集(自动化)的方式,功能很全面

 

相关文档:https://feapder.com/#/source_code/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93-Selenium

更详细的功能介绍,推荐阅读官方文档,就不在此赘述了

AirSpider:https://feapder.com/#/usage/AirSpider

Request:https://feapder.com/#/source_code/Request

Response:https://feapder.com/#/source_code/Response

Spider

Spider 是一款基于 redis 的分布式爬虫,适用于海量数据采集,支持断点续爬、爬虫报警、数据自动入库等功能。

① 创建爬虫项目

与 AirSpider 相同,命令如下

 

② 创建爬虫程序

命令如下

 

选择需要创建的爬虫模板,按上下键更换模版,这里选择 Spider 模板,回车即可创建成功

代码样例如下,默认给了 redis 的配置方式,连接信息需按真实情况修改

 

配置信息

  • REDISDB_IP_PORTS: Redis 服务器的连接地址。若为集群或哨兵模式,多个连接地址用逗号分开,若为哨兵模式,需要加个 REDISDB_SERVICE_NAME 参数
  • REDISDB_USER_PASS: Redis 服务器的连接密码
  • REDISDB_DB:使用 Redis 的默认数据库,通常是 0。Redis 支持多数据库索引(从 0 到 15,可以通过更改此值来选择不同的数据库。

Spider 支持断点续爬,其利用了 redis 有序集合来存储任务,有序集合有个分数,爬虫取任务时,只取小于当前时间戳分数的任务,同时将任务分数修改为当前时间戳 +10 分钟(可自行配置(这个取任务与改分数是原子性的操作)。当任务做完时,且数据已入库后,再主动将任务删除。

Spider 任务请求失败或解析函数抛出异常时,会自动重试,默认重试次数为 100 次(可自行配置)。当任务超过最大重试次数时,默认会将失败的任务存储到 redis 的 {redis_key}😒_failed_requsets 里,以供排查。

更详细的功能介绍,建议阅读官方文档

Spider:https://feapder.com/#/usage/Spider

Spider 进阶:https://feapder.com/#/source_code/Spider%E8%BF%9B%E9%98%B6

TaskSpider、BatchSpider

TaskSpider:一款分布式爬虫,内部封装了取种子任务的逻辑,内置支持从 redis 或者 mysql 获取任务,也可通过自定义实现从其他来源获取任务。

BatchSpider:一款分布式批次爬虫,对于需要周期性采集的数据,优先考虑使用本爬虫。会自动维护个批次信息表,详细的记录了每个批次时间、任务完成情况、批次周期等信息。会维护个批次时间信息,本批次未完成下一批次不会开始。

  • 批次的含义:例如 2024.07.05 开始采集,2024.07.08 才采集完成,此间数据的批次都为 2024.07.05。方便业务做时序数据展示。

四种爬虫模板:AirSpider -> Spider -> TaskSpider -> BatchSpider,后一种都是基于前一种的优化,具体的使用说明,官方文档都写的很清楚了

TaskSpider:https://feapder.com/#/usage/TaskSpider

BatchSpider:https://feapder.com/#/usage/BatchSpider

数据监控

feapder 还有配套的爬虫管理系统 ------ feaplat(暂时不支持 Apple 芯片,可以通过 docker 安装部署

https://feapder.com/#/feapder_platform/feaplat

feapder 内置监控打点(feapder 版本大于等于 1.6.6,部署到 feaplat 爬虫管理系统即可实现对请求和数据监控

最新文章
2024年2月6日定期维护公告
亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,《梦幻西游》所有服务器将于2024年2月6日上午8:00停机,进行每周例行的维护工作。预计维护时间为上午8:00至9:30,请各位玩家相互转告,并提前留意游戏时间,以免造成不必要的损失。对
kafka 可视化工具_6个重要维度 | 帮你快速了解这9款免费etl调度工具的应用
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的
android服务框架下载安装 安卓10google服务框架
2013-05-15要想理解GoogleServicesFramework,得先从GMS说起,GMS全称为Google Mobile Service,即谷歌移动服务。是谷歌的一项服务,旨在让用户利用移动电话或其他移动设备使用谷歌搜索(Search)、语音搜索(Search by Voice)、Gmail邮件服务
2023抖音巨量引擎广告!
巨量引擎是字节跳动旗下综合的数字化营销服务平台,致力于让不分体量、地域的企业及个体,都能通过数字化技术激发创造、驱动生意,实现商业的可持续增长。抖音巨量引擎覆盖综合资讯、短视频、综合视频、问答、垂直资讯等领域,多款产品使用
2024年中国搜索引擎行业的市场发展现状及投资机会分析
搜索引擎行业是指专注于开发、运营和维护搜索引擎平台及相关技术的产业领域。这个行业通过运用复杂的算法和先进的技术手段,收集、处理和呈现互联网上的海量信息,为用户提供快速、准确、全面的搜索服务。搜索引擎不仅帮助用户迅速找到所需
AI怎么制作一个简单的店铺图标?
店铺图标怎么做?屋顶、凉蓬的形状怎么做?这里我将给大家具体讲讲简单的店铺图标的制作方法。1、使用矩形工具绘制一个矩形,宽高比大约为2:12、再画2个矩形:1个做窗,1个做门。3、选中所有的矩形,然后执行【对象】菜单路径偏移路径。4
AI PPT免费生成工具好用吗?学生和职场人都会特别需要这些软件
无论是在学校还是在职场环境中,PPT的完成度都是演示场合中得分高低的重要影响因素。 不过,由于大多数人并不是专业的PPT制作者,因此,遇到PPT制作用时过长、制作效果缺乏专业感等问题实属常事。不过,有什
2024年最新CPU性能天梯图:超高清版,一览顶尖处理器排名
在这个迅速发展的数字时代,CPU的性能已经成为了衡量电脑硬件水平的关键指标。随着技术的不断进步,每年我们都能见证到处理器性能的显著提升,特别是在2024年,各大厂商都推出了他们的旗舰产品,进一步推高了性能的天梯。因此,理解和比较
Continuum 2025 v18.0.1版本一键安装BCC系列插件
使用 AI 驱动的工具减少噪点和放大图像,添加专业电影纹理,应用广播就绪过渡,快速修复素材,使用 Particle Illusion 的 3D 粒子动画即时生成动态图形元素,甚至使用 Title Studio 构建 2D/3D 矢量标题。Continuum 2025现在作为Adobe Afte
2024年(卓越前海壹号)官方首页网站|卓越前海壹号百度百科|房天下
深圳·卓越前海壹号✅卓越前海壹号售楼处24小时电话:400-883-1335【☎已认证】✅卓越前海壹号营销中心24小时电话:400-8950-807【☎已认证】Vip贵宾置业===欢迎来电预约尊享内部折扣===匠心钜制恭迎品鉴✅卓越前海壹号售楼中心24小时电话:40
相关文章
推荐文章
发表评论
0评