介绍一款能取代 Scrapy 的爬虫框架 - feapder

爬虫框架 - feapder 1. 前言 众所周知,Python 最流行的爬虫框架是 Scrapy,它主要用于爬取网站结构性数据 今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder 项目地址: https://github.com/Boris-code/feapder 2. 介绍及安装 和 Scrapy 类似,feapder 支持轻量级爬虫、分布式爬虫、批次爬虫、爬虫报警机制等功能 内置的 3 种爬虫如下: AirSpider 轻量级爬虫,适合简单场景、数据量少的爬虫 Spider. 阅读详情

1. 前言

众所周知,Python 最流行的爬虫框架是 Scrapy,它主要用于爬取网站结构性数据

今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder

项目地址:

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

2. 介绍及安装

和 Scrapy 类似,feapder 支持轻量级爬虫、分布式爬虫、批次爬虫、爬虫报警机制等功能

内置的 3 种爬虫如下:

  • AirSpider

    轻量级爬虫,适合简单场景、数据量少的爬虫

  • Spider

    分布式爬虫,基于 Redis,适用于海量数据,并且支持断点续爬、自动数据入库等功能

  • BatchSpider

    分布式批次爬虫,主要用于需要周期性采集的爬虫

在实战之前,我们在虚拟环境下安装对应的依赖库

# 安装依赖库
pip3 install feapder

3. 实战一下

我们以最简单的 AirSpider 来爬取一些简单的数据

目标网站:aHR0cHM6Ly90b3BodWIudG9kYXkvIA==

详细实现步骤如下( 5 步)

3-1  创建爬虫项目

首先,我们使用「 feapder create -p 」命令创建一个爬虫项目

# 创建一个爬虫项目
feapder create -p tophub_demo

3-2  创建爬虫 AirSpider

命令行进入到 spiders 文件夹目录下,使用「 feapder create -s 」命令创建一个爬虫

cd spiders

# 创建一个轻量级爬虫
feapder create -s tophub_spider 1

其中

  • 1 为默认,表示创建一个轻量级爬虫 AirSpider

  • 2 代表创建一个分布式爬虫 Spider

  • 3 代表创建一个分布式批次爬虫 BatchSpider

3-3  配置数据库、创建数据表、创建映射 Item

以 Mysql 为例,首先我们在数据库中创建一张数据表

# 创建一张数据表
create table topic
(
    id         int auto_increment
        primary key,
    title      varchar(100)  null comment '文章标题',
    auth       varchar(20)   null comment '作者',
    like_count     int default 0 null comment '喜欢数',
    collection int default 0 null comment '收藏数',
    comment    int default 0 null comment '评论数'
);

然后,打开项目根目录下的 settings.py 文件,配置数据库连接信息

# settings.py

MYSQL_IP = "localhost"
MYSQL_PORT = 3306
MYSQL_DB = "xag"
MYSQL_USER_NAME = "root"
MYSQL_USER_PASS = "root"

最后,创建映射 Item( 可选 )

进入到 items 文件夹,使用「 feapder create -i 」命令创建一个文件映射到数据库

PS:由于 AirSpider 不支持数据自动入库,所以这步不是必须

3-4  编写爬虫及数据解析

第一步,首先使「 MysqlDB 」初始化数据库

from feapder.db.mysqldb import MysqlDB

class TophubSpider(feapder.AirSpider):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.db = MysqlDB()

第二步,在 start_requests 方法中,指定爬取主链接地址,使用关键字「download_midware 」配置随机 UA

import feapder
from fake_useragent import UserAgent

def start_requests(self):
    yield feapder.Request("https://tophub.today/", download_midware=self.download_midware)

def download_midware(self, request):
    # 随机UA
    # 依赖:pip3 install fake_useragent
    ua = UserAgent().random
    request.headers = {'User-Agent': ua}
    return request

第三步,爬取首页标题、链接地址

使用 feapder 内置方法 xpath 去解析数据即可

def parse(self, request, response):
    # print(response.text)
    card_elements = response.xpath('//div[@class="cc-cd"]')

    # 过滤出对应的卡片元素【什么值得买】
    buy_good_element = [card_element for card_element in card_elements if
                        card_element.xpath('.//div[@class="cc-cd-is"]//span/text()').extract_first() == '什么值得买'][0]

    # 获取内部文章标题及地址
    a_elements = buy_good_element.xpath('.//div[@class="cc-cd-cb nano"]//a')

    for a_element in a_elements:
        # 标题和链接
        title = a_element.xpath('.//span[@class="t"]/text()').extract_first()
        href = a_element.xpath('.//@href').extract_first()

        # 再次下发新任务,并带上文章标题
        yield feapder.Request(href, download_midware=self.download_midware, callback=self.parser_detail_page,
                              title=title)

第四步,爬取详情页面数据

上一步下发新的任务,通过关键字「 callback 」指定回调函数,最后在 parser_detail_page 中对详情页面进行数据解析

def parser_detail_page(self, request, response):
    """
    解析文章详情数据
    :param request:
    :param response:
    :return:
    """
    title = request.title

    url = request.url

    # 解析文章详情页面,获取点赞、收藏、评论数目及作者名称
    author = response.xpath('//a[@class="author-title"]/text()').extract_first().strip()

    print("作者:", author, '文章标题:', title, "地址:", url)

    desc_elements = response.xpath('//span[@class="xilie"]/span')

    print("desc数目:", len(desc_elements))

    # 点赞
    like_count = int(re.findall('\d+', desc_elements[1].xpath('./text()').extract_first())[0])
    # 收藏
    collection_count = int(re.findall('\d+', desc_elements[2].xpath('./text()').extract_first())[0])
    # 评论
    comment_count = int(re.findall('\d+', desc_elements[3].xpath('./text()').extract_first())[0])

    print("点赞:", like_count, "收藏:", collection_count, "评论:", comment_count)

3-5  数据入库

使用上面实例化的数据库对象执行 SQL,将数据插入到数据库中即可

# 插入数据库
sql = "INSERT INTO topic(title,auth,like_count,collection,comment) values('%s','%s','%s','%d','%d')" % (
title, author, like_count, collection_count, comment_count)

# 执行
self.db.execute(sql)

4. 最后

本篇文章通过一个简单的实例,聊到了 feapder 中最简单的爬虫 AirSpider

关于 feapder 高级功能的使用,后面我将会通过一系列实例进行详细说明!

TN Python爬虫高级开发工程师 网络爬虫,涵盖从基础原理到高阶实战的丰富内容。讲解网络爬虫通讯、数据采集与解析原理,涉及多任务、动态数据采集。进阶至金融数据前后端实战,应对多种反爬虫手段,如 cookie、验证码、JavaScript 混淆加密等,教授绕过技巧。还深入介绍 scrapy、feapder 等框架,包括使用、数据提取、中间件优化,涉及电商项目实战,并涵盖分布式、环境部署知识。 阅读详情

相关推荐

还用什么scrapy!用这个框架快速轻量,原来爬虫这么简单

之前,我们写爬虫,用得最多的框架莫过于scrapy啦,今天我们用最近新出的爬虫框架feapder来开发爬虫,看下是怎样的体验。 目标网站:aHR0cHM6Ly93d3cubGFnb3UuY29tLw== 需求:采集职位列表与职位详情,详情需每7天更新一次 为了演示,以下只搜索与爬虫相关的职位 1. 调研 1.1 列表页面 首先我们需要看下页面是否为动态渲染的,接口是否有反爬。 看是否为动态渲染的可以右键,显示网页源代码,然后搜索网页上的内容源码里是否存在,比如搜索列表的第一条知衣科技,匹配了0

pyjishu的博客 676

python模块之feapder 爬虫框架

feapder是一款上手简单,功能强大的Python爬虫框架,内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不同场景的需求,但像任何工具一样,它也有其优点和缺点。以下是 feapder 的一些优缺点:分布式爬取支持:feapder 支持分布式爬取,可以在多台机器上同时运行,提高了爬取效率。多种爬取方式:支持普通请求爬取、Selenium 动态渲染爬取、API 调用、抓包分析等多种爬取方式,适用于不同类型的网站。

老衲爱洗头的博客 3655

feapder:feapder是一种支持分布式,扩展采集,任务防丢,报警丰富的python爬虫框架的

加料器 简介 feapder是一种简单,快速,轻量级的爬虫框架。起名源于fast,easy,air,pro,spider的缩写,以开发快速,抓取快速,使用简单,功能强大为一体,历时4年倾心打造。支持轻量爬虫,分布爬虫,并列爬虫,爬虫集成,以及完善的爬虫报警机制。 之前一直在公司内部使用,已使用本框架采集100+数据源,日采千万数据。现在开源,供大家学习交流! 读音: [ˈfiːpdə] 官方文档: : 环境要求: Python 3.6.0以上 适用于Linux,Windows,macOS 安装 从PyPi: pip3 install feapder 从Git: pip3 install git+https://github.com/Boris-code/feapder.git 若安装出错,请参考 小试一下 创建爬虫 feapder create -s first_spider 创

零基础上手Feapder爬虫框架

## 适用人群- 数据爱好者- 爬虫工程师- Python工程师## 课程概述Python爬虫框架Feapder快速入门AirSpider爬虫本课程用于推广Feapder爬虫框架内容包含Feapder的AirSpider爬虫的使用抓取图片站并下载图片到本地

feapder是一款支持分布式、批次采集、任务防丢、报警丰富的python爬虫框架.zip

爬虫爬虫 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。 通用网络爬虫 通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。由于商业原因,它们的技术细节很少公布出来。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。 通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。

feapder[ˈfiːpdə]是一款上手简单,功能强大的 Python 爬虫框架,内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不.zip

feapder[ˈfiːpdə]是一款上手简单,功能强大的 Python 爬虫框架,内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不

一款能取代 Scrapy 的爬虫框架 - feapder

1. 前言众所周知,Python 最流行的爬虫框架是 Scrapy,它主要用于爬取网站结构性数据今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder项目地址:https://...

SeizeeveryDay的博客 372

静态与动态LACP链路聚合:原理、配置与排错实战指南

链路聚合技术是提升网络带宽与可靠性的核心方案,通过将多个物理端口逻辑捆绑,实现带宽叠加与链路冗余。其原理基于IEEE 802.3ad标准,通过负载均衡算法将数据流分布到不同物理链路,既避免了数据包乱序,又提升了整体吞吐量。该技术的核心价值在于消除单端口瓶颈、提供毫秒级故障切换,并能简化网络拓扑管理。在企业服务器接入、数据中心互联及虚拟化平台等场景中,链路聚合已成为构建高可用网络的基础。实践中,动态LACP模式通过协议报文协商,能主动检测链路故障并防止配置错误导致的网络环路,相比静态聚合更为可靠。本文将深入解

weixin_31412781的博客 268

一款可能取代 Scrapy 的爬虫框架 - feapder

1. 前言大家好,我是菜鸟哥!众所周知,Python 最流行的爬虫框架是 Scrapy,它主要用于爬取网站结构性数据今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder项目地...

cainiao_python的博客 715

若依开源框架(分离版)在人大金仓数据库下使用

对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。

🐱喵测实验室 5943

农业杂草检测——甜菜杂草目标检测数据集

甜菜田中常见的杂草种类繁多,主要有稗草、狗尾草、芦苇、灰藜等。•稗草:一年生草本植物,和稻子外形极为相似。秆直立,光滑无毛。圆锥花序主轴具角棱,粗糙;小穗密集于穗轴的一侧,具极短柄或近无柄。花果期 7 - 10月。生长在稻田里、沼泽、沟渠旁、低洼荒地等。•狗尾草:又叫莠,因穗形像狗尾巴而得名。秆疏丛生,直立或基部膝曲上升。叶片条状披针形,叶鞘松弛,光滑,鞘口有毛;叶舌毛状。圆锥花序呈圆柱状,直立或稍弯垂,刚毛绿色或变紫色。夏、秋采收,晒干。常生长在麦田、谷子、玉米、棉花、豆类、花生、薯类、蔬菜、甜菜、马铃薯

qq_38220914的博客 1140

Python爬虫框架:Scrapy、EasySpider与FEAPDER的比较与实践

Scrapy是一个专为大规模数据抓取和解析而设计的Python框架,它提供了一整套解决方案,包括数据抓取、解析、清洗、存储和分析。Scrapy以其高效、模块化和可扩展的特性而闻名,使得开发者能够快速构建和维护复杂的爬虫项目。Scrapy支持多种数据源,如HTML、XML和JSON,并提供了丰富的内置功能,如自动处理JavaScript、处理cookies、管理请求队列和错误处理等。

全世界的博客 5242

HC32 CAN通信

qqa

zhaopenglihui的博客 5436

【爬虫框架:feapder,管理系统 feaplat】

对于学习 Python 爬虫的人来说,Scrapy 这个框架是一个绕不过去的槛。它是一个非常重量级的 Python 爬虫框架,如果你想要做一些复杂的爬虫项目,可能就需要用到它。但是,由于 Scrapy 框架很复杂,它的学习成本也非常高,学习的道路上布满了很多坑,并且都很难找到解决办法。对于初学者来说,学习 Scrapy 框架需要极大的耐心和勇气,一般人很有可能在中途就放弃了。既然有痛点,肯定就有人来抚慰。

1956

Codex Skill:AI编程助手的专项能力扩展与实战指南

在AI编程助手领域,Skill(技能)是一种标准化的能力扩展机制,它通过封装特定任务所需的指令、资源和脚本,解决AI模型在专项任务上的能力局限。其核心原理是将专业知识和工作流程模块化,让通用AI助手能够像领域专家一样执行复杂任务。从技术价值看,Skill不仅提升了代码生成的准确性,更重要的是实现了业务流程的自动化集成,如代码规范检查、API文档生成等具体场景。这种机制特别适用于需要结合内部工具链和特定业务逻辑的企业环境,能够显著提升开发效率和质量。通过安装PPT生成、SpringBoot项目创建等专项Ski

weixin_33672109的博客 414

从SPICE到电磁场:非线性器件在CST场路协同仿真中的建模艺术

本文深入探讨了非线性器件在CST场路协同仿真中的建模技术,重点分析了SPICE模型与电磁场仿真的集成方法。通过对比线电流模型和面电流模型的优缺点,结合实际案例展示了二极管阵列在电磁散射调控中的应用,为工程师提供了优化仿真精度与效率的实用技巧。

pandas7gardener的博客 200

Python 爬虫-feapder 框架简介

feapder 框架 学习目标 掌握便捷式框架操作流程 掌握请求钩子结构使用 掌握框架项目搭建流程 掌握数据入库与去重 1 简介 国内文档:https://boris-code.gitee.io/feapder feapder 是一款上手简单,功能强大的Python爬虫框架,使用方式类似scrapy,方便由scrapy框架切换过来,框架内置3种爬虫: 1.1 支持的场景 ...

shifengboy的博客 4483

外骨骼机器人(二):自适应振荡器

振荡器是一种数学工具,可以用于实时跟踪、预测类周期信号的频率、相位、幅值等,而助行外骨骼机器人需要自动适应人体的行走频率、幅度,两者相结合,就能使助行外骨骼机器人拥有更舒适、更自然的行走步态。 ......

行者无疆的博客 4264

干货!爬虫框架 Feapder 和 Scrapy 的对比分析

这是「进击的Coder」的第 476篇技术分享作者:Boris来源:程序员技术宝典“ 阅读本文大概需要 8 分钟。 ”本篇文章在源码层面比对 feapder、scrapy 、scrapy...

静觅 1889

AI: 机器学习的模型是如何训练的?(在试错中学习)

一句话理解机器学习一般训练过程 :通过有标签样本来调整(学习)并确定所有权重Weights和偏差Bias的理想值。 训练的目标:最小化损失函数 (损失函数下面马上会介绍) 机器学习算法在训练过程中,做的就是:检查多个样本并尝试找出可最大限度地减少损失的模型;目标就是将损失(Loss)最小化 在这里插入图片描述 上图就是一般模型训练的一般过程(试错过程),其中 模型: 将一个或多个特征作为输入,然后返回一个预测 (y’) 作为输出。为了进行简化,不妨考虑一种采用一个特征并返回一个预测的模型,如下公式

HowieXue 薛永浩的博客 3万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

feapder 与 scrapy 对比分析

本篇文章在源码层面比对feapder、scrapy、scrapy-redis的设计,阅读本文后,会加深您对scrapy以及feapder的了解,以及为什么推荐使用feapder scrapy分析 1. 解析函数或数据入库出错,不会重试,会造成一定的数据丢失 scrapy自带的重试中间件只支持请求重试,解析函数内异常或者数据入库异常不会重试,但爬虫在请求数据时,往往会有一些意想不到的页面返回来,若我们解析异常了,这条任务岂不是丢了。 当然有些大佬可以通过一些自定义中间件的方式或者加异常捕获的方...

叶飘っ叶相偎 的博客 1741

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

别再用scrapy了,这款爬虫框架让你开发效率飞

为什么不使用scrapy scrapy给我的印象: 重,框架中的许多东西都用不到,如CrawlSpider、XMLFeedSpider 不好上手,对小白不友好 不支持从数据库中取任务作为种子抓取 数据入库不支持批量,需要自己写批量逻辑 启动方式需要用scrapy命令行,打断点调试不方便 举例说明 本文以某东的商品爬虫为例,假如我们有1亿个商品,需要每7天全量更新一次,如何做呢? 1. 准备种子任务 首先需要个种子任务表来存储这些商品id,设计表如下: CREATE TABLE `jd_item_tas

叶飘っ叶相偎 的博客 3655

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

爬虫框架:Feapder使用心得

摘要:本文介绍了Python爬虫框架feapder的使用体验,针对Scrapy框架可能被网站检测的问题,作者尝试使用功能更丰富的feapder框架。文章详细说明了feapder的安装、项目创建、数据库配置、日志设置等基本操作,并对比了与Scrapy在参数传递、Item定义和文件下载等方面的差异。作者认为feapder上手简单且功能强大,配合爬虫管理平台能进一步提升效率,适合不同场景的爬虫需求。

weixin_49572581的博客 1242
上一篇: Python 分词工具大总结,盘点哪个更好用?
下一篇: Python 批量加水印只需一行命令!
菜鸟学Python
博客等级 码龄9年 8081粉丝 571原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值