推荐下我的 scrapy 扩展工具

342 天前
 ayugesheng

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

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

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

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

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

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

1842 次点击
所在节点    Python
12 条回复
ayugesheng
342 天前
像一些项目可能会有上百个的 spider 脚本,大家都是如何管理的呢,在同一个项目还好说,但大部分场景是在不同的项目板块中的。

我见过直接就一整个项目,然后分别创建 middlewares ,items ,pipelines ,settings 和 spiders 的文件夹,然后每一个 spider 在这些文件夹中都会有对应的模块,最后 spider 脚本在不同的文件夹下导入对应的模块使用,惊到我了。虽然目的是达到了。
ayugesheng
341 天前
如果发现项目中有实现不太好的地方或者有建议的话,可以提 ISSUE 中的 Question 来反馈,我空闲时会查看的。
xinmans
339 天前
挺好,我一般是 crontab 或者用 docker ,k3s 管理,webui 的话有个 scrapydweb 的项目还凑合,但是 bug 太多了,最后我觉得还是 crontab 最方便
ayugesheng
339 天前
@xinmans 部署机器不多的话,直接 crontab 还是很香的,docker 也用过。但是具有多服务器部署和调度方便还具有警告等功能的话,crawlab 我觉得使用着挺不错的。
Maerd
338 天前
部署不是有 scrapyd 吗
xinmans
338 天前
@ayugesheng 我就一台 nas ,你是整了一个集群?,那还不如上 k8s 整个调度
ayugesheng
338 天前
@Maerd scrapyd 及其只依赖 scrapyd 开发的工具只能管理 scrapy 项目。还是会有一些其它非 scrapy 项目。
ayugesheng
338 天前
@xinmans 大部分都是多台机器的场景,一般都需要有方便地切换部署的服务器,或者指定分配星期 1,3,5 在某个服务器运行某个项目等功能。crawlab 比较符合需求,xxl-crawler 也用过,我个人感觉还是 crawlab 比较好。k8s 还没有用过,但应该没有比 crawlab 这种直接 ui 点击操作或者官方 api 执行来上传项目来的方便。
xinmans
338 天前
@ayugesheng scraydweb 你也可以试试,也是可视化的,不过我还是喜欢命令行,包一堆框架出 bug 很不容易调试
ayugesheng
338 天前
@xinmans 好的,有时间体验下。
Maerd
325 天前
看了一下,确实不错,老哥应该也是专职爬虫工程师,中间件中居然还有字体反爬,项目组直到现在还是只有我一个人用 scrapy ,同事给我移交的全都是 requests 项目,重写确实十分痛苦,有了这些可以少很多麻烦,给个 star 。
ayugesheng
324 天前
@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