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

这个框架对外提供了 API 接口来创建,非常便利。目前的设计思路就是只需要实现一个 parse 接口,就行了,方便后续 AI 的介入。
后续开发计划
- 开放 AI 接口,通过 AI 自动生成爬虫代码
- 集成基于 redis 的任务队列
- 实现对外输出的接口层,例如爬虫结果转储到 mysql 等。
目前这是一个非常简单清晰的项目,希望和感兴趣的朋友共建这个项目,提升大家的技术影响力,或许对找远程工作也是有帮助的。
Python 爬虫微框架 web-craft 如何使用
scrapy:我算什么
Web-craft 快速上手指南
Web-craft 是个轻量级爬虫框架,核心就两个类:Spider 和 Request。下面直接给个能跑的完整例子:
from web_craft import Spider, Request
import json
class MySpider(Spider):
def start_requests(self):
# 起始URL
yield Request("https://httpbin.org/json", callback=self.parse_json)
def parse_json(self, response):
# 解析JSON响应
data = json.loads(response.text)
print(f"抓取到标题: {data['slideshow']['title']}")
# 模拟翻页(示例链接)
next_url = "https://httpbin.org/html"
yield Request(next_url, callback=self.parse_html)
def parse_html(self, response):
# 用CSS选择器解析HTML
title = response.css('h1::text').get()
print(f"HTML页面标题: {title}")
if __name__ == "__main__":
spider = MySpider()
spider.run()
核心操作:
- 继承 Spider 类,重写
start_requests()方法生成初始请求 - 用 yield 返回 Request 对象,通过
callback指定解析函数 - 解析函数接收 response 参数,可用
response.text获取文本,response.css()进行CSS选择 - 在解析函数中继续 yield Request 就能实现自动爬取链路
常用配置(可选):
class MySpider(Spider):
name = "demo"
start_urls = ["https://example.com"] # 简写起始URL
def parse(self, response):
# 默认解析函数
pass
总结:继承Spider、yield Request、写解析函数,三步搞定。
比 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
看着很理想,现实很残酷,只有基础到爆的程度的抓取才会只有一条 url ,实际业务上请求参数,请求头都需要特定计算,甚至依赖计算,完全无法处理。你这也没简单到哪里,甚至我为了调用你还得单独写个请求你这接口的,那我何必不直接请求目的接口直接 parse 呢。
和我前某东家的自研框架想法类似,但是你至少得有 request + parse 两个阶段吧。
ip 被 ban 了,你怎么解决
无非是一个生产消费模型,解耦了任务和解析这两侧,说实话没啥必要,爬虫面对的核心问题并不在这里。
对,目前有这个接口的实现。可以自定义 header request ,自定义 parse ,甚至于入库自定义。这个项目主要的意义其实不是用来写单个爬虫,而是成百上千个爬虫,提供对外的聚合查询服务。
大佬,这得爬虫里面自己连代理,框架不处理代理
对实际就是抽象了一个架构,对外提供 API ,对于那种成规模爬虫可以使用,如果是单独爬一个用这个没啥意义。后面的方向就是通过提供清晰的接口来提供 AI 爬虫代码的生成。
n 年前,用过类似的内部框架。对接数字货币交易所行情,parse 各个交易所的数据结构,转成我们内部的结构。但是这种应用不能严格称为爬虫。
这么说 你这个项目废了,爬从是目前市场上唯一一个不能做成标准化的东西
内部的爬虫是自定义的。

