推荐下我的 scrapy 扩展工具

2023-12-22 16:51:17 +08:00
 ayugesheng

因为经常使用 scrapy 开发,所以有很多的 scrapy 项目需要创建和维护,但是项目中的一些模块中的结构和内容大都一致,就想有一些方便的操作。一开始就知道 scrapy 有模板方法,但我也想添加一些其它功能比如不用关心 item 模块的赋值。主要目的就是尽量使开发者只需专心于 spider 模块的开发即可。

当然项目中有很多地方不优雅甚至不太合适的地方,比如自动创建 Mysql 表字段的功能的实现方法,我会慢慢完善。

希望这个项目能给有扩展 scrapy 需求的开发者有点指引。

项目地址: AyugeSpiderTools: https://github.com/shengchenyang/AyugeSpiderTools

文档地址: AyugeSpiderTools readthedocs: https://ayugespidertools.readthedocs.io/en/latest/

大家也可以讨论下都是使用的什么爬虫框架,管理平台之类的。

1892 次点击
所在节点    Python
12 条回复
ayugesheng
2023-12-22 17:19:55 +08:00
像一些项目可能会有上百个的 spider 脚本,大家都是如何管理的呢,在同一个项目还好说,但大部分场景是在不同的项目板块中的。

我见过直接就一整个项目,然后分别创建 middlewares ,items ,pipelines ,settings 和 spiders 的文件夹,然后每一个 spider 在这些文件夹中都会有对应的模块,最后 spider 脚本在不同的文件夹下导入对应的模块使用,惊到我了。虽然目的是达到了。
ayugesheng
2023-12-23 12:48:33 +08:00
如果发现项目中有实现不太好的地方或者有建议的话,可以提 ISSUE 中的 Question 来反馈,我空闲时会查看的。
xinmans
2023-12-24 22:31:38 +08:00
挺好,我一般是 crontab 或者用 docker ,k3s 管理,webui 的话有个 scrapydweb 的项目还凑合,但是 bug 太多了,最后我觉得还是 crontab 最方便
ayugesheng
2023-12-24 23:25:43 +08:00
@xinmans 部署机器不多的话,直接 crontab 还是很香的,docker 也用过。但是具有多服务器部署和调度方便还具有警告等功能的话,crawlab 我觉得使用着挺不错的。
Maerd
2023-12-26 10:32:15 +08:00
部署不是有 scrapyd 吗
xinmans
2023-12-26 15:43:10 +08:00
@ayugesheng 我就一台 nas ,你是整了一个集群?,那还不如上 k8s 整个调度
ayugesheng
2023-12-26 17:03:30 +08:00
@Maerd scrapyd 及其只依赖 scrapyd 开发的工具只能管理 scrapy 项目。还是会有一些其它非 scrapy 项目。
ayugesheng
2023-12-26 17:20:53 +08:00
@xinmans 大部分都是多台机器的场景,一般都需要有方便地切换部署的服务器,或者指定分配星期 1,3,5 在某个服务器运行某个项目等功能。crawlab 比较符合需求,xxl-crawler 也用过,我个人感觉还是 crawlab 比较好。k8s 还没有用过,但应该没有比 crawlab 这种直接 ui 点击操作或者官方 api 执行来上传项目来的方便。
xinmans
2023-12-26 18:44:48 +08:00
@ayugesheng scraydweb 你也可以试试,也是可视化的,不过我还是喜欢命令行,包一堆框架出 bug 很不容易调试
ayugesheng
2023-12-26 19:29:20 +08:00
@xinmans 好的,有时间体验下。
Maerd
356 天前
看了一下,确实不错,老哥应该也是专职爬虫工程师,中间件中居然还有字体反爬,项目组直到现在还是只有我一个人用 scrapy ,同事给我移交的全都是 requests 项目,重写确实十分痛苦,有了这些可以少很多麻烦,给个 star 。
ayugesheng
356 天前
@Maerd #11 很高兴对你有帮助,使用过 scrapy 的话会很容易上手的。字体反爬只是浅尝,虽说原理就只是找出字体间的真实映射关系,但很复杂(字体反爬有多种实现形式和变种),很难通用。所以主要用来扩展 scrapy 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX