问答爬取工具

轻量级MCP服务,提供腾讯元宝问答对的单页提取和全量爬取功能,支持JSON/JSONL/TXT输出格式。

  • by Jerry-poor
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jerry-poor/MCP_Scraper

使用说明

MCP Scraper (Yuanbao)

轻量级 MCP 服务,封装了两类与“腾讯元宝”相关的爬取/抽取工具:

  • extract_yuanbao_dialogues:输入分享页 URL,提取单页问答对(含 JSON/JSONL/TXT 输出)
  • crawl_full_data:基于浏览器 “Copy as fetch (Node.js)” 文本或 fetch.txt,按分页全量抓取并输出标准问答结构

本项目使用 FastMCP 2.0,默认使用 streamable-http 协议对外提供工具调用。

运行服务

python main.py               # 使用默认 0.0.0.0:8000
# 或
python main.py --host 0.0.0.0 --port 8000

环境变量也可配置:MCP_HOST、MCP_PORT。

可用工具与入参

  1. extract_yuanbao_dialogues(分享页单页提取)
  • 入参:
    • url:分享页链接(例如 https://yb.tencent.com/s/xxxx)
    • force_url:是否强制 URL 抓取(忽略本地文件)
    • extract_from_file:从本地 extracted_dialogues.json 或 next_data.json 解析
  • 说明:适用于单页问答抽取;不处理 fetch 文本。若需批量抓取,请使用 crawl_full_data。
  1. crawl_full_data(基于 fetch 的全量爬取)
  • 四种输入方式(按优先级覆盖):
    • 直接传入完整的 fetch 字符串作为工具参数(最简单)
    • 显式提供 url、headers、body
    • 直接粘贴 fetch_text(浏览器 “Copy as fetch (Node.js)” 完整文本)
    • 提供 fetch_file(如 fetch.txt 路径,文件中包含上述 fetch 文本)
  • 可选控制:delay(分页间隔秒),max_retries,timeout
  • 输出:标准 question/think/answer 列表,同时提供 json_output 与 txt_output

获取模板:

# 通过 MCP 客户端调用 get_full_crawl_template 获取示例结构

简单用法示例(伪代码)

# 获取全量爬取模板
tpl = await get_full_crawl_template()

# 粘贴浏览器复制的 fetch 文本
tpl["fetch_text"] = "fetch(\"https://yuanbao.tencent.com/api/user/agent/conversation/v1/detail\", { ... })"

# 执行全量抓取
res = await crawl_full_data(tpl)
if res.success:
    print(res.total_conversations, res.total_messages)
    print(res.json_output)
else:
    print("失败:", res.message)

注意

  • 全量抓取需要有效的认证信息(例如 cookie),否则会返回认证失败的错误信息
  • 请遵守平台使用协议及当地法律法规,谨慎使用