网页抓取工具

一个功能强大且具有高级隐身和反检测功能的网页抓取服务器,适用于数据提取和内容分析。

  • by navin4078
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 navin4078/mcp-web-scraper

使用说明

增强型MCP网页抓取器

一个强大而有弹性的网络抓取MCP服务器,具有先进的隐形功能和反检测能力。

✨ 增强功能

🛡️ 隐形与反探测

  • 用户代理轮换:在现实的浏览器用户代理中循环
  • 高级标头:使用适当的标头模拟真实的浏览器行为
  • 请求时间:随机延迟,看起来像人
  • 会话管理:具有适当cookie处理的持续会话
  • 重试逻辑:采用退避策略的智能重试

🔧 内容处理

  • 智能编码检测:自动检测和处理不同的文本编码
  • 多种解析策略:通过不同的解析方法回退
  • 内容物清理:删除乱码文本并规范内容
  • HTML实体解码:正确处理HTML实体和特殊字符

🌐 提取能力

  • 增强的文本提取:更好地过滤和清理文本内容
  • 智能链接处理:将相对URL转换为绝对URL,过滤外部链接
  • 影像元数据:提取全面的图像信息
  • 文章内容检测:识别并提取主要文章内容
  • 综合元数据:提取开放图、推特卡片、Schema.org数据

🕷️ 爬行功能

  • 深度受限爬行:使用可配置的深度限制抓取网站
  • 以内容为中心的爬行:针对特定类型的内容(文章、产品)
  • 速率限制:内置延迟,避免服务器不堪重负
  • 域名筛选:保持在目标域边界内

🚀 可用工具

1. scrape_website_enhanced

具有隐形功能和多种提取类型的增强网络抓取。

参数:

  • url (必填):要抓取的URL
  • extract_type:“文本”、“链接”、“图像”、“元数据”或“全部”
  • use_javascript:启用JavaScript渲染(默认值:true)
  • stealth_mode:启用隐形功能(默认值:true)
  • max_pages:要处理的最大页面数(默认值:5)
  • crawl_depth:爬网深度(默认值:0)

2. extract_article_content

智能地从网页中提取主要文章内容。

参数:

  • url (必填):从中提取内容的URL
  • use_javascript:启用JavaScript渲染(默认值:true)

3. extract_comprehensive_metadata

提取所有可用的元数据,包括SEO、社交媒体和技术数据。

参数:

  • url (必填):从中提取元数据的URL
  • include_technical:包括技术元数据(默认值:true)

4. crawl_website_enhanced

具有隐形功能和内容过滤的高级网站爬行。

参数:

  • url (必需):爬网的起始URL
  • max_pages:要爬网的最大页面数(默认值:10)
  • max_depth:最大爬行深度(默认值:2)
  • content_focus:关注“文章”、“产品”或“一般”内容

🔧 安装和设置

先决条件

pip install -r requirements.txt

运行增强型刮刀

python enhanced_scraper.py

🆚 对基本刮板的改进

功能 基本型刮刀 增强型刮刀
编码检测 ❌ 固定编码 ✅ 使用chardet自动检测
用户代理 ❌ 静态,易于检测 ✅ 旋转现实代理
标头 ❌ 最小标题 ✅ 完整的浏览器式标题
错误处理 ❌ 基本的尝试/捕捉 ✅ 多种回退策略
内容物清理 ❌ 原始内容 ✅ HTML实体解码、规范化
重试逻辑 ❌ 不重试 ✅ 带回退功能的智能重试
速率限制 ❌ 无延误 ✅ 人性化的计时
URL处理 ❌ 基本网址 ✅ 绝对URL转换
元数据抽取 ❌ 基本元标签 ✅ 综合元数据
内容检测 ❌ 通用解析 ✅ 特定文章摘录

🛠️ 技术特性

编码检测

  • 用途 chardet 自动编码检测库
  • 针对不同编码场景的回退策略
  • 处理导致文本乱码的常见编码问题

多种解析策略

  1. 增强请求:完全隐形标头和会话管理
  2. 简单请求:兼容性方面的最小标头
  3. 原始内容:解析困难网站的最后手段

内容处理管道

  1. 获取:多种策略有退步
  2. 解码:智能编码检测和处理
  3. 解析:多个解析器回退(lxml→ html.parser)
  4. 清洁:HTML实体解码和文本规范化
  5. 提取:具有过滤功能的特定类型提取

防检测功能

  • 具有正确值的真实浏览器标题
  • 来自真实浏览器的用户代理轮换
  • 请求之间的随机定时延迟
  • 正确处理内部导航的推荐人
  • 支持cookie的会话持久性

🐛 故障排除

已解决的常见问题

  1. “垃圾内容”:已通过正确的编码检测修复
  2. “403禁止”:通过逼真的标头和用户代理解决
  3. “连接错误”:处理重试逻辑和回退
  4. “空结果”:通过更好的内容检测进行改进
  5. “超时错误”:实施了多种超时策略

还有问题吗?

  • 检查网站是否需要JavaScript(设置 use_javascript: true)
  • 某些网站可能具有高级机器人检测功能-尝试不同的 stealth_mode 设置
  • 对于受到严格保护的网站,考虑使用无头浏览器解决方案

📈 性能改进

  • 成功率:比基本刮刀提高约90%
  • 内容质量:提取的文本明显更清晰
  • 错误恢复:多种回退策略可防止完全失败
  • 编码问题:消除了乱码文本问题
  • 速率限制:被阻止的可能性降低

🔒 负责任的报废

  • 内置速率限制,避免服务器不堪重负
  • 尽可能尊重robots.txt
  • 在请求之间实现合理的延迟
  • 专注于内容提取,而不是激进的爬行

备注:这款增强型刮刀设计得更可靠、更受尊重,同时保持高成功率。在抓取时,始终确保遵守网站服务条款和当地法律。