上手简单,功能强大的Python爬虫框架——feapder


Posted in Python onApril 27, 2021

简介

feapder 是一款上手简单,功能强大的Python爬虫框架,使用方式类似scrapy,方便由scrapy框架切换过来,框架内置3种爬虫:

  • AirSpider爬虫比较轻量,学习成本低。面对一些数据量较少,无需断点续爬,无需分布式采集的需求,可采用此爬虫。
  • Spider是一款基于redis的分布式爬虫,适用于海量数据采集,支持断点续爬、爬虫报警、数据自动入库等功能
  • BatchSpider是一款分布式批次爬虫,对于需要周期性采集的数据,优先考虑使用本爬虫。

feapder除了支持断点续爬、数据防丢、监控报警外,还支持浏览器渲染下载,自定义入库pipeline,方便对接其他数据库(默认数据库为Mysql,数据可自动入库,无需编写pipeline)

读音: [ˈfiːpdə]

环境要求:

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

安装

From PyPi:

通用版

pip3 install feapder

完整版:

pip3 install feapder[all]

通用版与完整版区别:

完整版支持基于内存去重

完整版可能会安装出错,若安装出错,请参考安装问题

小试一下

创建爬虫

feapder create -s first_spider

创建后的爬虫代码如下:

import feapder


class FirstSpider(feapder.AirSpider):
    def start_requests(self):
        yield feapder.Request("https://www.baidu.com")

    def parse(self, request, response):
        print(response)


if __name__ == "__main__":
    FirstSpider().start()

直接运行,打印如下:

Thread-2|2021-02-09 14:55:11,373|request.py|get_response|line:283|DEBUG|
                -------------- FirstSpider.parse request for ----------------
                url  = https://www.baidu.com
                method = GET
                body = {'timeout': 22, 'stream': True, 'verify': False, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'}}

<Response [200]>
Thread-2|2021-02-09 14:55:11,610|parser_control.py|run|line:415|DEBUG| parser 等待任务 ...
FirstSpider|2021-02-09 14:55:14,620|air_spider.py|run|line:80|INFO| 无任务,爬虫结束

代码解释如下:

  • start_requests: 生产任务
  • parse: 解析数据

将请求头转为json格式

爬虫采集中,我们经常需要携带网站的header等参数,比如:我们在浏览器检查工具看到某请求头为:

Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36

如果我们想在发请求时携带这个header,那么需要手动将其转为json格式。

使用

输入命令,回车

> feapder create -j
请输入需要转换的内容:(xxx:xxx格式,支持多行)

上手简单,功能强大的Python爬虫框架——feapder

输出如下:

上手简单,功能强大的Python爬虫框架——feapder

另外,feapder还支持创建有序字典,方便对比参数前后的变化

命令为:

feapder create -sj

以上就是上手简单,功能强大的Python爬虫框架——feapder的详细内容,更多关于Python 爬虫框架feapder的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
玩转python爬虫之cookie使用方法
Feb 17 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
python使用tornado实现登录和登出
Jul 28 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 Python
python爬取抖音视频的实例分析
Jan 19 Python
python实现语音常用度量方法的代码详解
May 25 Python
Python绘制散乱的点构成的图的方法
Apr 21 Python
python绘制箱型图
基于Python实现的购物商城管理系统
Apr 27 #Python
详解用Python把PDF转为Word方法总结
python实现的web监控系统
python opencv人脸识别考勤系统的完整源码
Apr 26 #Python
python实现监听键盘
Apr 26 #Python
python如何做代码性能分析
Apr 26 #Python
You might like
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
js实现时钟定时器
2020/03/26 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python避免死锁方法实例分析
2015/06/04 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
抽象类和接口的区别
2012/09/19 面试题
劳资员岗位职责
2013/11/11 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
银行委托书范本
2014/04/04 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL