核心功能与架构
Web Scraper 是一个面向新闻和文章内容的结构化数据提取工具,采用5级级联管道设计,从轻量级静态请求逐步升级到重度浏览器渲染,确保在最小资源消耗下获取最大提取成功率。
Stage 1 - 新闻检测:通过URL模式、Schema.org标记、OG元标签和内容启发式评分(作者、日期、段落密度)智能识别新闻文章,阈值≥0.4才进入后续处理。
Stage 2 - 多策略提取:遵循"最轻优先"原则——先尝试requests+BeautifulSoup静态抓取,内容不足时自动升级到Playwright无头浏览器渲染,大规模任务则启用Scrapy并发爬取。
Stage 3 - 清洗归一化:使用trafilatura进行业界领先的正文提取(自动去除导航栏、广告、评论区),配合NFKC编码规范化和智能分块处理超长文章。
Stage 4 - 结构化元数据:支持YAML声明式配置CSS选择器,提取作者、发布时间、分类标签,并检测软硬付费墙类型。
Stage 5 - LLM实体提取(可选):通过OpenRouter API调用Gemini/Claude等模型,从清洗后的文本中提取人物、组织、地点、事件及关系图谱,支持分块处理长文。
显著优势
| 维度 | 优势说明 |
|------|---------|
| **智能降级** | 自动识别SPA框架(Next.js/Nuxt)和懒加载内容,无需人工判断何时启用浏览器 |
| **多语言优化** | trafilatura对葡萄牙语(PT-BR)内容提取精度领先,适合拉美/非洲新闻源 |
| **抗反爬** | 内置指数退避速率限制、用户代理轮换、资源拦截(图片/字体/追踪器)降低被封概率 |
| **断点续传** | 每50条自动保存检查点,崩溃后可从断点恢复,避免数小时工作丢失 |
| **声明式维护** | YAML配置CSS选择器,网站改版时无需修改Python代码即可适配 |
局限性与风险
技术局限:
- 硬付费墙内容无法绕过,仅能提取标题和导语预览
- Playwright首次启动需下载Chromium(约100MB),容器环境需预装
- LLM实体提取成本随Token量线性增长,长文分块可能产生实体边界切割
合规风险:
- 默认遵守robots.txt,但部分网站反爬策略可能触发IP临时封禁
- 巴西《互联网民法》第7条要求明确告知数据抓取目的,新闻内容提取需评估版权例外(第46条合理使用)适用范围
- 个人数据(作者姓名、引用人物)处理需符合LGPD最小化原则
运维成本:
- Scrapy集群部署需要Redis消息队列和分布式存储经验
- 依赖库版本冲突风险(lxml/html5lib/playwright底层绑定C库)
适用场景
| 场景 | 推荐配置 |
|------|---------|
| 舆情监测(50-500源) | Stage 1→2→3,禁用LLM,JSON输出到S3 |
| 竞争对手产品情报 | 启用Playwright抓取SPA电商站,YAML定制选择器 |
| 学术研究语料库 | 全管道+分块LLM提取,CSV+实体关系图谱 |
| 合规存档(新闻出版商) | 静态抓取优先,硬编码robots.txt白名单 |
典型风险场景
1. IP封禁连锁反应:批量抓取未配置延迟,导致出口IP被列入CDN黑名单,影响同网段其他服务
2. 付费墙误判:软付费墙检测逻辑将隐藏内容误判为不可用,导致优质信源遗漏
3. LLM幻觉污染:temperature设置不当或模型选择错误,实体提取混入虚构人物/组织
4. 编码灾难:未启用NFKC规范化,拉丁变音符号(ã/ç/é)在下游分析中匹配失败