Python 爬虫微框架 web-craft - V2EX
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
happytaoer
V2EX    Python

Python 爬虫微框架 web-craft

  •  
  •   happytaoer 1 天前 1074 次点击

    背景

    这两天构思了一个爬虫框架,对外提供 API 创建爬虫任务,然后内部的队列会进行爬虫的消费。只需要实现数据的解析接口就能快速编写爬虫。非常适合需要利用 AI 快速生成爬虫代码的团队。 screenshot.png

    这个框架对外提供了 API 接口来创建,非常便利。目前的设计思路就是只需要实现一个 parse 接口,就行了,方便后续 AI 的介入。

    后续开发计划

    1. 开放 AI 接口,通过 AI 自动生成爬虫代码
    2. 集成基于 redis 的任务队列
    3. 实现对外输出的接口层,例如爬虫结果转储到 mysql 等。

    目前这是一个非常简单清晰的项目,希望和感兴趣的朋友共建这个项目,提升大家的技术影响力,或许对找远程工作也是有帮助的。

    项目地址: happytaoer/web-craft: A Python-based modular web scraping framework focused on efficient single URL crawling, supporting asynchronous processing, API services, and highly customizable spider modules.

    12 条回复    2025-10-21 18:42:49 +08:00
    BingoW
        1
    BingoW  
       1 天前
    scrapy:我算什么
    happytaoer
        2
    happytaoer  
    OP
       1 天前
    @BingoW 比 scrapy 还轻量。大部分爬虫只需要实现 parse 方法即可得到支持 API 的爬虫系统。并且对 AI 编写爬虫特别友好。未来的开发思路是精简为主,完成核心功能,提供 AI 快速集成。

    from typing import Dict, Any
    from ..core.base_spider import BaseSpider


    class DefaultSpider(BaseSpider):
    def parse(self, raw_content: str, url: str, headers: Dict[str, str]) -> Dict[str, Any]:
    return raw_content
    rev1si0n
        3
    rev1si0n  
       1 天前
    看着很理想,现实很残酷,只有基础到爆的程度的抓取才会只有一条 url ,实际业务上请求参数,请求头都需要特定计算,甚至依赖计算,完全无法处理。你这也没简单到哪里,甚至我为了调用你还得单独写个请求你这接口的,那我何必不直接请求目的接口直接 parse 呢。
    rev1si0n
        4
    rev1si0n  
       1 天前
    和我前某东家的自研框架想法类似,但是你至少得有 request + parse 两个阶段吧。
    justtokankan
        5
    justtokankan  
       1 天前
    ip 被 ban 了,你怎么解决
    fkdtz
        6
    fkdtz  
       1 天前
    无非是一个生产消费模型,解耦了任务和解析这两侧,说实话没啥必要,爬虫面对的核心问题并不在这里。
    happytaoer
        7
    happytaoer  
    OP
       1 天前
    @rev1si0n 对,目前有这个接口的实现。可以自定义 header request ,自定义 parse ,甚至于入库自定义。这个项目主要的意义其实不是用来写单个爬虫,而是成百上千个爬虫,提供对外的聚合查询服务。
    happytaoer
        8
    happytaoer  
    OP
       1 天前
    @justtokankan 大佬,这得爬虫里面自己连代理,框架不处理代理
    happytaoer
        9
    happytaoer  
    OP
       1 天前
    @fkdtz 对实际就是抽象了一个架构,对外提供 API ,对于那种成规模爬虫可以使用,如果是单独爬一个用这个没啥意义。后面的方向就是通过提供清晰的接口来提供 AI 爬虫代码的生成。
    luzihang
        10
    luzihang  
       17 小时 38 分钟前
    n 年前,用过类似的内部框架。对接数字货币交易所行情,parse 各个交易所的数据结构,转成我们内部的结构。但是这种应用不能严格称为爬虫。
    czl777
        11
    czl777  
       10 小时 56 分钟前
    这么说 你这个项目废了,爬从是目前市场上唯一一个不能做成标准化的东西
    happytaoer
        12
    happytaoer  
    OP
       9 小时 18 分钟前
    @czl777 内部的爬虫是自定义的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     958 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 20:01 PVG 04:01 LAX 13:01 JFK 16:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86