网页数据爬取需兼顾质量、结构、合规与工程性:明确任务需求→遵守robots.txt与隐私规范→依页面类型选requests/Playwright→结构化保存为JSONL等训练友好格式→抽样核验、SimHash去重、过滤低质页。

AI模型训练中,网页数据爬取不是单纯“把网页存下来”,而是要确保数据质量、结构清晰、可复用,并适配后续清洗、标注与建模环节。整个流程需兼顾合法性、稳定性与工程可维护性。
明确数据需求与合规边界
先问清楚:你要训练什么任务?需要什么类型的数据?文本、图片、表格还是POI信息?不同任务对数据格式、噪声容忍度、时效性要求差异很大。
- 情感分析模型 → 需带标签的评论文本,最好含用户评分或情绪倾向标识
- 问答系统 → 要成对的“问题+标准答案”,或带上下文的FAQ页面
- 视觉大模型预训练 → 需大量图文对,且图/文语义强相关,不能只靠alt文本凑数
务必检查目标网站的 robots.txt(如 https://example.com/robots.txt),避开禁止抓取路径;优先选择公开、非登录、无反爬校验的页面;避免高频请求,加随机延时;涉及个人信息或版权内容,不采集、不存储、不用于商用训练。
选对工具:静态页用 requests + BeautifulSoup,动态页用 Playwright
手机网页或轻量PC站大多可直接请求HTML,适合用 Python 的 requests + BeautifulSoup 快速提取:
import requests
from bs4 import BeautifulSoup
resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0..."})
soup = BeautifulSoup(resp.text, "html.parser")
titles = [h2.text.strip() for h2 in soup.select("article h2")]
但遇到 JavaScript 渲染内容(如滚动加载、点击展开、登录态才显示)——必须用浏览器自动化工具:
- Playwright:轻量、跨浏览器、支持等待元素、截图、模拟交互,推荐首选
- Selenium:成熟但略重,适合已有 WebDriver 经验的团队
- 别硬刚 Puppeteer 或无头 Chrome 自建——Playwright 官方已封装好所有依赖
结构化保存,为训练准备干净输入
爬下来的数据不能堆成一堆 HTML 文件。要按训练 pipeline 要求组织格式:
- 文本类任务 → 每条样本一行 JSONL:{"text": "...", "label": "positive"}
- 多模态任务 → 用统一 ID 关联图片文件名与描述 JSON:img_001.jpg + meta_001.json
- 增量更新场景 → 加时间戳字段和来源 URL,便于去重和溯源
- 避免直接存 raw HTML;提取后立刻清理:删广告 div、去 JS 注释、标准化换行与空格
示例配置(Playwright 爬取文档站):
export const config = {
url: "https://docs.example.ai/guide",
match: "https://docs.example.ai/guide/**",
selector: ".content-main", // 只取正文区域
outputFormat: "jsonl", // 不是 HTML,不是 Markdown,是训练友好格式
};
加入轻量质检与自动去重
爬虫跑通≠数据可用。上线前至少做三件事:
- 抽样人工核验:随机打开 20 条,看是否错乱、截断、混入导航栏
- 用 SimHash 或 MinHash 对文本去重(尤其新闻/博客类易重复采集)
- 过滤低信息密度页:长度<50 字、含>70% 特殊符号、纯广告模板页直接丢弃
这些步骤可在爬取后加一个 Python 脚本完成,不用改爬虫主逻辑。
基本上就这些。不复杂但容易忽略的是:每次爬完别急着喂模型,先花10分钟看看数据长什么样——很多训练失败,根源不在参数,而在第一行数据就错了。










