V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Dec 22, 2023 · 3168 views
    This topic created in 871 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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