使用说明
MCP网络爬虫服务器
生产准备就绪 MCP(模型上下文协议) 用于人工智能网络抓取的服务器,具有渐进式回退、浏览器自动化和Roo/VCode集成。处理搜索、抓取、JS渲染、交互和全文转储。
🚀 特性
- 渐进式倒退:HTTP/aiohttp→ 美丽汤→ 无头剧作家→ 头部(视觉)。
- 搜索:谷歌/DuckDuckGo(API+抓取)。
- 提取:Trafilatura用于干净、AI就绪的文本。
- 浏览器自动化:导航、单击、键入、评估JS、截图、全文转储。
- 并发:用于并行操作的异步信号量。
- MCP本地:Roo/Claude/GPT代理的JSON-RPC工具。
- 模块化:
scraper-tools.py用于安装在其他MCP服务器上。 - 已测试:用于AFM、LinkedIn(JS)、UNEP爬行、交互的pytest套件。
🛠 工具(mcp-scraper mcp-tool_name)
| 工具 | 参数 | 描述 | 返回 |
|---|---|---|---|
search_query |
query, num_results=10 |
谷歌/DDG搜索 | JSON {"urls": [...], "status": "success"} |
search_multiple |
queries: list, max_concurrent=5 |
并发搜索 | JSON列表 |
scrape_url |
url, max_retries=3 |
回退抓取 | JSON {"content": clean text, "method_used": "..."} |
scrape_multiple |
urls: list, max_concurrent=10 |
批量抓取 | JSON列表 |
extract_content |
html, url? |
Trafilatura Clean | str文本 |
browser_navigate |
url |
无头导航 | "Navigated to {url}. Preview: ..." |
browser_navigate_headful |
url |
可见浏览器 (验证码/调试) | 相同+“窗口打开” |
browser_click |
selector |
点击元素 | "Clicked {selector}" |
browser_type |
selector, text, submit? |
键入/发送密钥 | "Typed {text}" |
browser_evaluate |
script |
运行JS(querySelector, innerText) |
"Eval result: {result}" |
browser_screenshot |
name, selector? |
PNG base64 | data:image/png;base64,... |
browser_get_text |
- | 正文(Trafilatura) | str(约2000个字符) |
browser_get_full_text |
- | 完全转储: innerText +Traffilatura |
str(~4000个字符) |
browser_close |
- | 关闭会话 | "Session closed" |
⚙️ 设置
-
安装:
pip install aiohttp beautifulsoup4 trafilatura fastmcp uvicorn playwright fastapi playwright install chromium -
运行服务器 (端口8919):
cd scraper-mcp python server.py- 健康:
curl http://127.0.0.1:8919/health - MCP:
http://127.0.0.1:8919/mcp
- 健康:
-
Roo集成 (VSCode):
- 增添
mcp_settings.json:"scraper-mcp": {"url": "http://127.0.0.1:8919/mcp"} - 使用
prompt.txt作为代理的系统提示。
- 增添
-
模块化安装 (例如,在另一个MCP上):
from scraper_tools import mcp_tools mcp.mount(mcp_tools, prefix="scraper") # scraper_search_query
🧪 测试
pytest tests/test_scraper.py -v
- AFM刮擦(BS回退)。
- LinkedIn JS(导航+全文)。
- 谷歌互动(键入/点击/评估)。
- 环境署爬行(搜索→ link → 验证)。
- 通过核心;预计反机器人网站会超时。
📖 使用示例
命令行界面:
curl -X POST http://127.0.0.1:8919/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"scrape_url","arguments":{"url":"https://example.com"}},"id":1}'
代理提示 (prompt.txt):指南搜索→ 刮擦→ 互动→ dump.
交互式爬行:
browser_navigate("https://www.unep.org/")browser_type("input[placeholder*='search']", "publications")browser_evaluate("document.querySelector('a[href*=\"publications\"]').href")browser_get_full_text()→ 全部扔掉。
🔧 优化
- 隐形:旋转UA/代理(扩展FallbackScraper)。
- 规模:Docker+Redis会话。
- 伦理:robots.txt,延迟。
🚀 未来增强功能/TODO
- 代理旋转:集成Zyte API(ScrapingBee/Zyte智能代理)用于住宅IP,CAPTCHA旁路。
- 木偶回退:Node.js Puppeteer集成,用于真正的浏览器指纹识别/隐形(通过子进程或混合服务器)。
- 验证码求解器:2用于头部模式的捕获/反捕获服务钩。
- 会话保持:Redis用于跨请求/实例共享浏览器上下文。
- Docker/K8s:通过健康检查进行多容器缩放。
- 先进隐形技术:浏览器指纹随机化,类人鼠标/打字曲线。
- PDF提取:pdfplumber/PyMuPDF用于文档抓取。
- 视觉AI:截图OCR(Tesseract/PaddleOCR)+LLM布局分析。
- 履带式发动机:链接发现、站点地图解析、深度受限蜘蛛。
问题?登录终端。通过PR贡献!