V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ayugesheng
V2EX  ›  Python

推荐下我的 scrapy 扩展工具

  •  
  •   ayugesheng · 2023-12-22 16:51:17 +08:00 · 1883 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    我见过直接就一整个项目,然后分别创建 middlewares ,items ,pipelines ,settings 和 spiders 的文件夹,然后每一个 spider 在这些文件夹中都会有对应的模块,最后 spider 脚本在不同的文件夹下导入对应的模块使用,惊到我了。虽然目的是达到了。
    ayugesheng
        2
    ayugesheng  
    OP
       2023-12-23 12:48:33 +08:00
    如果发现项目中有实现不太好的地方或者有建议的话,可以提 ISSUE 中的 Question 来反馈,我空闲时会查看的。
    xinmans
        3
    xinmans  
       364 天前
    挺好,我一般是 crontab 或者用 docker ,k3s 管理,webui 的话有个 scrapydweb 的项目还凑合,但是 bug 太多了,最后我觉得还是 crontab 最方便
    ayugesheng
        4
    ayugesheng  
    OP
       364 天前
    @xinmans 部署机器不多的话,直接 crontab 还是很香的,docker 也用过。但是具有多服务器部署和调度方便还具有警告等功能的话,crawlab 我觉得使用着挺不错的。
    Maerd
        5
    Maerd  
       362 天前
    部署不是有 scrapyd 吗
    xinmans
        6
    xinmans  
       362 天前 via iPhone
    @ayugesheng 我就一台 nas ,你是整了一个集群?,那还不如上 k8s 整个调度
    ayugesheng
        7
    ayugesheng  
    OP
       362 天前
    @Maerd scrapyd 及其只依赖 scrapyd 开发的工具只能管理 scrapy 项目。还是会有一些其它非 scrapy 项目。
    ayugesheng
        8
    ayugesheng  
    OP
       362 天前
    @xinmans 大部分都是多台机器的场景,一般都需要有方便地切换部署的服务器,或者指定分配星期 1,3,5 在某个服务器运行某个项目等功能。crawlab 比较符合需求,xxl-crawler 也用过,我个人感觉还是 crawlab 比较好。k8s 还没有用过,但应该没有比 crawlab 这种直接 ui 点击操作或者官方 api 执行来上传项目来的方便。
    xinmans
        9
    xinmans  
       362 天前 via iPhone
    @ayugesheng scraydweb 你也可以试试,也是可视化的,不过我还是喜欢命令行,包一堆框架出 bug 很不容易调试
    ayugesheng
        10
    ayugesheng  
    OP
       362 天前
    @xinmans 好的,有时间体验下。
    Maerd
        11
    Maerd  
       349 天前
    看了一下,确实不错,老哥应该也是专职爬虫工程师,中间件中居然还有字体反爬,项目组直到现在还是只有我一个人用 scrapy ,同事给我移交的全都是 requests 项目,重写确实十分痛苦,有了这些可以少很多麻烦,给个 star 。
    ayugesheng
        12
    ayugesheng  
    OP
       349 天前
    @Maerd #11 很高兴对你有帮助,使用过 scrapy 的话会很容易上手的。字体反爬只是浅尝,虽说原理就只是找出字体间的真实映射关系,但很复杂(字体反爬有多种实现形式和变种),很难通用。所以主要用来扩展 scrapy 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2343 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.