# boris-spider
![](https://img.shields.io/badge/python-3.6-brightgreen)
## 重要声明
⚠️⚠️⚠️ 本框架已重命名为feapder,本项目已废弃,直接看新项目即可
新项目地址:[https://github.com/Boris-code/feapder](https://github.com/Boris-code/feapder)
文档地址:[https://boris.org.cn/feapder](https://boris.org.cn/feapder)
## 简介
**boris-spide**r是一款使用Python语言编写的爬虫框架,于多年的爬虫业务中不断磨合而诞生,相比于scrapy,该框架更易上手,且又满足复杂的需求,支持分布式及批次采集。
官方文档:https://spider-doc.readthedocs.io
爬虫开发的一些经验分享:https://mp.weixin.qq.com/s/cIUNatRCUtlAi0HAkbmcwA
## 特性
### 1. 支持周期性采集
周期性抓取是爬虫中常见的需求,如每日抓取一次商品的销量等,我们把每个周期称为一个批次。
这类爬虫,普遍做法是设置个定时任务,每天启动一次。但你有没有想过,若由于某种原因,定时任务启动程序时没启动起来怎么办?比如服务器资源不够了,启动起来直接被kill了。
另外如何保证每条数据在每个批次内都得以更新呢?
本框架支持批次采集,引入了批次表的概念,详细记录了每一批次的抓取状态
![-w899](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/12/20/16084680404224.jpg?x-oss-process=style/markdown-media)
### 2. 支持分布式
面对海量的数据,分布式采集必不可少的,本框架原生支持分布式,且可随时重启爬虫,任务不丢失
### 3. 完善的报警机制
为了保证数据的全量性、准确性、时效性,本框架内置报警机制,有了这些报警,我们可以实时掌握爬虫状态
![-w657](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/12/20/16084718683378.jpg?x-oss-process=style/markdown-media)
![-w501](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/12/20/16084718974597.jpg?x-oss-process=style/markdown-media)
![-w416](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/12/29/16092335882158.jpg?x-oss-process=style/markdown-media)
## 框架流程图
![boris-spider -1-](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/06/08/borisspider-1.png?x-oss-process=style/markdown-media)
### 模块说明:
* spider **框架调度核心**
* parser_control **模版控制器**,负责调度parser
* collector **任务收集器**,负责从任务队里中批量取任务到内存,以缓冲对任务队列数据库的访问频率及并发量
* parser **数据解析器**
* start_request 初始任务下发函数
* item_buffer **数据缓冲队列**,批量将数据存储到数据库中
* request_buffer **请求任务缓冲队列**,批量将请求任务存储到任务队列中
* request **数据下载器**,封装了requests,用于从互联网上下载数据
* response **数据返回体**,封装了response, 支持xpath、css、re等解析方式。自动处理中文乱码
### 流程说明
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
## 安装
From PyPi:
pip3 install boris-spider
From Git:
pip3 install git+https://github.com/Boris-code/boris-spider.git
window下若报bitarray安装错误,可手动安装bitarray,然后再安装此框架。安装步骤:
下载解压:https://github.com/ilanschnell/bitarray/archive/1.5.3.zip
cd bitarray-1.5.3
python setup.py install
## 快速上手
创建爬虫
spider create -p first_spider
创建后的爬虫代码如下:
import spider
class FirstSpider(spider.SingleSpider):
def start_requests(self, *args, **kws):
yield spider.Request("https://www.baidu.com")
def parser(self, request, response):
# print(response.text)
print(response.xpath('//input[@type="submit"]/@value').extract_first())
if __name__ == "__main__":
FirstSpider().start()
直接运行,打印如下:
Thread-2|2020-05-19 18:23:41,128|request.py|get_response|line:283|DEBUG|
-------------- FirstSpider.parser request for ----------------
url = https://www.baidu.com
method = GET
body = {'timeout': 22, 'stream': True, 'verify': False, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36'}}
百度一下
Thread-2|2020-05-19 18:23:41,727|parser_control.py|run|line:415|INFO| parser 等待任务 ...
FirstSpider|2020-05-19 18:23:44,735|single_spider.py|run|line:83|DEBUG| 无任务,爬虫结束
## 福利
框架内的utils/tools.py模块下积累了作者多年的工具类函数,种类达到100+,且之后还会不定期更新,具有搬砖价值!
## 学习交流
想了解更多框架使用详情,可访问官方文档:https://spider-doc.readthedocs.io
如学习中遇到问题,可加下面的QQ群
群号:750614606
![WechatIMG188](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/04/08/wechatimg188.jpeg)
知识星球:
![知识星球](http://markdown-media.oss-cn-beijing.aliyuncs.com/2020/02/16/zhi-shi-xing-qiu.jpeg)
星球会不定时分享爬虫技术干货,涉及的领域包括但不限于js逆向技巧、爬虫框架刨析、爬虫技术分享等
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
于多年的爬虫业务中不断磨合而诞生,相比于scrapy,该框架更易上手,且又满足复杂的需求,支持分布式及批次采集。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
boris-spider是一款使用Python语言编写的爬虫框架,于多年的爬虫业务中不断磨合而诞生,相比于scrapy,该框架更易上手,且又满足复杂的需求,支持分布式及批次采集。.zip (55个子文件)
SJT-code
spider
__init__.py 739B
dedup
__init__.py 6KB
bitarray.py 4KB
expirefilter.py 2KB
bloomfilter.py 12KB
README.md 2KB
utils
__init__.py 129B
custom_argparse.py 2KB
export_data.py 5KB
redis_lock.py 4KB
log.py 6KB
tools.py 57KB
VERSION 6B
templates
spider
main.py 1KB
items
__init__.py 0B
setting.py 2KB
parsers
__init__.py 0B
item_template.tmpl 216B
parser_template.tmpl 464B
core
__init__.py 130B
handle_failed_requests.py 2KB
parser_control.py 28KB
scheduler.py 20KB
base_parser.py 6KB
spiders
__init__.py 347B
single_spider.py 3KB
spider.py 15KB
batch_spider.py 48KB
collector.py 5KB
setting.py 3KB
requirements.txt 180B
network
__init__.py 0B
response.py 11KB
proxy_pool.py 23KB
request.py 14KB
user_agent.py 6KB
selector.py 6KB
item.py 4KB
commands
__init__.py 0B
create_builder.py 17KB
shell.py 2KB
cmdline.py 1KB
db
__init__.py 130B
memory_db.py 769B
redisdb.py 26KB
mysqldb.py 9KB
buffer
__init__.py 130B
request_buffer.py 5KB
item_buffer.py 11KB
setup.py 2KB
LICENSE 1KB
tests
first_demo.py 410B
MANIFEST.in 192B
.gitignore 134B
README.md 6KB
共 55 条
- 1
资源评论
JJJ69
- 粉丝: 6167
- 资源: 5789
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功