因为经常使用 scrapy
开发,所以有很多的 scrapy
项目需要创建和维护,但是项目中的一些模块中的结构和内容大都一致,就想有一些方便的操作。一开始就知道 scrapy
有模板方法,但我也想添加一些其它功能比如不用关心 item
模块的赋值。主要目的就是尽量使开发者只需专心于 spider
模块的开发即可。
当然项目中有很多地方不优雅甚至不太合适的地方,比如自动创建 Mysql
表字段的功能的实现方法,我会慢慢完善。
希望这个项目能给有扩展 scrapy
需求的开发者有点指引。
项目地址: AyugeSpiderTools: https://github.com/shengchenyang/AyugeSpiderTools
文档地址: AyugeSpiderTools readthedocs: https://ayugespidertools.readthedocs.io/en/latest/
大家也可以讨论下都是使用的什么爬虫框架,管理平台之类的。
1
ayugesheng OP 像一些项目可能会有上百个的 spider 脚本,大家都是如何管理的呢,在同一个项目还好说,但大部分场景是在不同的项目板块中的。
我见过直接就一整个项目,然后分别创建 middlewares ,items ,pipelines ,settings 和 spiders 的文件夹,然后每一个 spider 在这些文件夹中都会有对应的模块,最后 spider 脚本在不同的文件夹下导入对应的模块使用,惊到我了。虽然目的是达到了。 |
2
ayugesheng OP 如果发现项目中有实现不太好的地方或者有建议的话,可以提 ISSUE 中的 Question 来反馈,我空闲时会查看的。
|
3
xinmans 2023-12-24 22:31:38 +08:00
挺好,我一般是 crontab 或者用 docker ,k3s 管理,webui 的话有个 scrapydweb 的项目还凑合,但是 bug 太多了,最后我觉得还是 crontab 最方便
|
4
ayugesheng OP @xinmans 部署机器不多的话,直接 crontab 还是很香的,docker 也用过。但是具有多服务器部署和调度方便还具有警告等功能的话,crawlab 我觉得使用着挺不错的。
|
5
Maerd 2023-12-26 10:32:15 +08:00
部署不是有 scrapyd 吗
|
6
xinmans 2023-12-26 15:43:10 +08:00 via iPhone
@ayugesheng 我就一台 nas ,你是整了一个集群?,那还不如上 k8s 整个调度
|
7
ayugesheng OP @Maerd scrapyd 及其只依赖 scrapyd 开发的工具只能管理 scrapy 项目。还是会有一些其它非 scrapy 项目。
|
8
ayugesheng OP @xinmans 大部分都是多台机器的场景,一般都需要有方便地切换部署的服务器,或者指定分配星期 1,3,5 在某个服务器运行某个项目等功能。crawlab 比较符合需求,xxl-crawler 也用过,我个人感觉还是 crawlab 比较好。k8s 还没有用过,但应该没有比 crawlab 这种直接 ui 点击操作或者官方 api 执行来上传项目来的方便。
|
9
xinmans 2023-12-26 18:44:48 +08:00 via iPhone
@ayugesheng scraydweb 你也可以试试,也是可视化的,不过我还是喜欢命令行,包一堆框架出 bug 很不容易调试
|
10
ayugesheng OP @xinmans 好的,有时间体验下。
|
11
Maerd 355 天前
看了一下,确实不错,老哥应该也是专职爬虫工程师,中间件中居然还有字体反爬,项目组直到现在还是只有我一个人用 scrapy ,同事给我移交的全都是 requests 项目,重写确实十分痛苦,有了这些可以少很多麻烦,给个 star 。
|
12
ayugesheng OP @Maerd #11 很高兴对你有帮助,使用过 scrapy 的话会很容易上手的。字体反爬只是浅尝,虽说原理就只是找出字体间的真实映射关系,但很复杂(字体反爬有多种实现形式和变种),很难通用。所以主要用来扩展 scrapy 。
|