声明:本文章所有内容仅供学习使用,无其它任何目的,严禁用于商业用途和非法用途, 否则产生一切后果均与作者无关
**
Feapder使用
1.创建项目
feapder create -p scidb
创建一个scidb的项目文件夹,item里面是存放数据库文件的,spiders存放我们编写的爬虫文件,settings里面可以声明一些常用的数据库例如:Mysql、Mongo、Redis等,settings设置后,爬虫文件中直接导入即可。
2.创建一个Task任务爬虫
feapder create -s scidb_task_spider
选择TaskSpider
任务爬虫必须要先创建好待采集的任务表,需要从任务表中获取的待采集的id、状态等。
CREATE TABLE `scidb_worker` (
`id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`state` int(11) NULL DEFAULT 0,
`version` varchar(256) NULL DEFAULT "",
`search_type` varchar(256) NULL DEFAULT "",
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id`(`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
3.运行spider.start_monitor_task() 函数,将待采集种子所需要的字段通过task_keys添加到redis中
4.根据task_id解析并更新任务表状态
4.项目部署
安装docker,下载feaplat包,终端在feaplat-master\feaplat-master路径下输入docker-compose up -d
访问:http://localhost 即可 默认账密:admin / admin
上传本地编写好的项目,一及一些第三方模块依赖
如果不想每一个项目都指定一个第三方依赖的话,可以直接自定义指定私有镜像,打开feapder_dockerfile文件
安装自己需要的模块
FROM registry.cn-hangzhou.aliyuncs.com/feapderd/feapder:2.4
# 例如安装依赖
RUN pip3 install pymongo \
&& pip3 install lite-tools \
&& pip3 install jsonpath \
&& pip3 install lxml \
&& pip3 install pymongo \
&& pip3 install pymysql \
&& pip3 install rich \
&& pip3 install loguru \
&& pip3 install packaging
================================================================================================
打包私有镜像
docker build -f feapder_dockerfile -t my_feapder:1.0 .
# 自己随便搞事情,搞完修改下 `.env`文件里的 SPIDER_IMAGE 的值即可 (SPIDER_IMAGE=my_feapder:1.0)
settings里面可以配置一些输出日志文件、兼容了自动化的一个xhr接口响应拦截、以及封装了mysql的增删改查操作,对我这种sql小白比较友好、一些入库去重和请求去重规则、监控报警、等。
部署效果
5.mysql顺便推荐下我朋友写的 lite-tools模块
安装直接 pip install lite-tools即可
链接mysql
mysql_science_data = MySql(config=MySqlConfig(database="metadata", host="127.0.0.1", user="root", password="root", port=3306,
table_name="geo_data_paper_set_worker"))
# 普通插入 table_name:指定插入的表明
mysql_science_data.insert(item, table_name="datadryad_institution_worker")
封装了批量插入(insert_bath)和批量(update_batch)更新操作,用起来蛮简单效率蛮高的
关于feapder的使用教程可以直接访问:https://feapder.com/#/,期待博哥兼容下MongoDB也可以作为任务表。