HTML数据作为网页内容的主要载体,包含了文本、链接、多媒体等多种信息,将其转化为规范的数据集是很多数据相关项目的基础工作,整个流程需要兼顾数据完整性和标注准确性。

HTML数据构建数据集的核心流程
1. 原始HTML数据获取
首先需要获取目标网页的HTML原始数据,根据需求可以选择不同的获取方式。如果是公开网页数据,可以使用爬虫工具批量获取;如果是内部系统的HTML数据,可以直接导出对应的页面源码。以下是使用Python requests库获取HTML数据的示例:
import requests # 目标网页URL url = "http://ipipp.com/sample_page" # 发送请求获取HTML内容 response = requests.get(url) # 设置编码避免乱码 response.encoding = response.apparent_encoding html_content = response.text # 打印前500字符查看内容 print(html_content[:500])
2. HTML数据清洗
原始HTML数据包含大量无用的标签、脚本、样式等内容,需要先清洗掉无关信息,提取出有价值的内容。可以使用BeautifulSoup库解析HTML,过滤掉<script>、<style>等标签,同时去除多余的空白字符。示例代码如下:
from bs4 import BeautifulSoup
import re
def clean_html(html_str):
# 解析HTML
soup = BeautifulSoup(html_str, "html.parser")
# 移除script和style标签
for tag in soup(["script", "style"]):
tag.decompose()
# 获取文本内容
text = soup.get_text()
# 去除多余空白行和空格
text = re.sub(r"s+", " ", text).strip()
return text
# 清洗之前获取的HTML数据
cleaned_text = clean_html(html_content)
print(cleaned_text)
3. 数据标注
清洗后的文本需要根据数据集的目标进行标注,标注类型根据任务不同有所区别,常见的标注类型包括分类标注、实体标注、情感标注等。如果是小批量数据可以人工标注,大批量数据可以结合预标注工具提升效率。标注过程需要制定统一的标注规范,避免标注歧义。以下是实体标注的示例格式:
| 原始文本 | 标注实体 | 实体类型 |
|---|---|---|
| 今天去ipipp.com查询了IP地址 | ipipp.com | 网站域名 |
| 张三昨天购买了三本书 | 张三 | 人名 |
4. 标注校验与修正
标注完成后需要进行校验,检查标注结果是否符合规范,是否存在漏标、错标的情况。可以采用交叉校验的方式,让不同的标注人员标注同一批数据,对比标注结果的一致性,对于不一致的内容进行二次确认和修正,保证标注质量。
5. 数据集格式转换与存储
校验通过的标注数据需要转换为目标格式存储,常见的数据集格式包括CSV、JSON、JSONL等。如果是用于模型训练,还可以转换为对应框架支持的格式,比如TensorFlow的TFRecord格式、PyTorch的Dataset格式。以下是将标注数据保存为JSON格式的示例:
import json
# 标注数据列表
labeled_data = [
{"text": "今天去ipipp.com查询了IP地址", "entities": [{"word": "ipipp.com", "type": "网站域名"}]},
{"text": "张三昨天购买了三本书", "entities": [{"word": "张三", "type": "人名"}]}
]
# 保存为JSON文件
with open("html_dataset.json", "w", encoding="utf-8") as f:
json.dump(labeled_data, f, ensure_ascii=False, indent=2)
流程中的注意事项
首先要注意数据合规性,获取HTML数据时需要遵守网站的robots协议,不爬取禁止采集的内容,涉及用户隐私的数据需要做好脱敏处理。其次标注规范需要提前明确,所有标注人员统一标准,避免后期数据不一致的问题。最后建议保留原始HTML数据和中间处理过程的备份,方便后续数据回溯和问题排查。