Skip to main content
Glama

Web Scraper MCP Server

Web Scraper MCP Server

基于 Model Context Protocol (MCP) 的 TypeScript 网页爬取服务器,内置多种常用爬取与命令工具。

使用npx配置MCP(无需clone代码)

"web-scraper-puppeteer": { "command": "npx", "args": [ "-y", "web-scraper-mcp-puppeteer", "mcpserver-puppeteer-nakiwang" ] }

Related MCP server: ScrapeGraph MCP Server

功能特性

  • 🚀 多种导出格式: 支持将爬取内容导出为 Markdown、Text、HTML 和 JSON 格式

  • 🎭 Puppeteer 无头浏览器: 解决未实现静态化的 SPA 单页应用渲染问题

  • 📋 规则集支持: 支持设置规则集,实现抓取网页的特定部分内容

  • 🔧 自定义域名 Headers: 支持设置自定义域名 Headers,绕过网站登录限制

  • 📦 批量爬取: 支持同时爬取多个 URL

  • 🎯 智能内容提取: 自动识别和提取网页主要内容

安装

# 克隆项目 git clone <repository-url> cd web-scraper-mcp # 安装依赖 npm install # 构建项目 npm run build

使用方法

启动服务器

npm start

可用工具

1. scrape_url - 爬取单个网页

{ "name": "scrape_url", "arguments": { "url": "https://example.com", "format": "markdown", "usePuppeteer": false, "ruleSet": "blog", "customHeaders": { "Authorization": "Bearer token" } } }

参数说明:

  • url (必需): 要爬取的网页 URL

  • format (可选): 导出格式,支持 markdowntexthtmljson,默认为 markdown

  • usePuppeteer (可选): 是否使用 Puppeteer 无头浏览器,默认为 false

  • ruleSet (可选): 规则集名称,用于提取特定内容

  • customHeaders (可选): 自定义请求头

2. create_rule_set - 创建内容提取规则集

{ "name": "create_rule_set", "arguments": { "name": "my_blog_rule", "rules": { "title": "h1, .post-title", "content": ".post-content, article", "links": ".post-content a", "images": ".post-content img", "exclude": ["nav", "footer", ".sidebar"] } } }

参数说明:

  • name (必需): 规则集名称

  • rules (必需): 提取规则配置

    • title: 标题选择器

    • content: 内容选择器

    • links: 链接选择器

    • images: 图片选择器

    • exclude: 要排除的选择器列表

3. set_domain_headers - 设置域名请求头

{ "name": "set_domain_headers", "arguments": { "domain": "example.com", "headers": { "Authorization": "Bearer your-token", "X-Custom-Header": "custom-value" } } }

4. batch_scrape - 批量爬取

{ "name": "batch_scrape", "arguments": { "urls": [ "https://example1.com", "https://example2.com", "https://example3.com" ], "format": "markdown", "usePuppeteer": false, "ruleSet": "blog" } }

预定义规则集

系统内置了以下规则集:

  • blog: 适用于大多数博客文章页面

  • news: 适用于新闻网站文章

  • product: 适用于电商产品页面

  • documentation: 适用于技术文档页面

  • forum: 适用于论坛帖子页面

导出格式

Markdown

将网页内容转换为 Markdown 格式,包含标题、内容、链接和图片。

Text

纯文本格式,去除所有 HTML 标签。

HTML

清理后的 HTML 格式,移除脚本和样式。

JSON

完整的结构化数据,包含所有提取的信息。

开发

项目结构

src/ ├── index.ts # 主服务器文件 ├── scraper/ │ └── webScraper.ts # 网页爬取器 ├── export/ │ └── exportManager.ts # 导出管理器 ├── rules/ │ └── ruleEngine.ts # 规则引擎 ├── headers/ │ └── headerManager.ts # 请求头管理器 └── utils/ └── logger.ts # 日志工具

开发模式

# 监听文件变化并自动重新构建 npm run dev

测试

npm test

配置

环境变量

  • LOG_LEVEL: 日志级别 (debug, info, warn, error)

  • PUPPETEER_TIMEOUT: Puppeteer 超时时间(毫秒)

  • REQUEST_TIMEOUT: HTTP 请求超时时间(毫秒)

自定义配置

可以通过修改源代码来自定义:

  1. 默认请求头: 编辑 src/headers/headerManager.ts

  2. 预定义规则集: 编辑 src/rules/ruleEngine.ts

  3. 导出格式: 编辑 src/export/exportManager.ts

常见问题

Q: 为什么某些网站爬取失败?

A: 可能是因为网站有反爬虫机制。尝试:

  1. 使用 usePuppeteer: true 启用无头浏览器

  2. 设置合适的自定义请求头

  3. 使用预定义的反检测请求头

Q: 如何处理需要登录的网站?

A: 使用 set_domain_headers 工具设置包含认证信息的请求头,如 Cookie 或 Authorization。

Q: SPA 应用内容为空怎么办?

A: 设置 usePuppeteer: true 使用 Puppeteer 渲染动态内容。

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/naku111/mcpServer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server