从html提取结构化数据后,通过清洗与统计方法检测异常。先用beautifulsoup解析HTML并转为DataFrame,再识别格式错误、缺失值、极端值等异常,结合Z-score、IQR、正则校验等方法进行数值与类别字段检测,最后采用替换、填充、删除或人工复核等方式处理异常,确保数据质量。

HTML 数据本身是结构化标记语言,主要用于网页展示,不直接用于统计分析。但在实际应用中,我们常需要从 HTML 页面中提取数据(如表格、列表等),这些提取后的数据可能包含异常值。因此,“HTML 数据的异常检测”通常指的是:从 HTML 中解析出的数据进行清洗和异常识别的过程。以下是具体方法和步骤。
1. 数据提取与结构化
在检测异常前,需先将 HTML 内容转化为结构化数据(如列表、字典、DataFrame):
- 使用 python 的 beautifulsoup 或 lxml 解析 HTML,提取表格(<table>)、列表(<ul>/<ol>)等内容。
- 将提取的数据转换为 pandas DataFrame,便于后续处理。
示例代码片段:
from bs4 import BeautifulSoup import pandas as pd <p>soup = BeautifulSoup(html_content, 'html.parser') table = soup.find('table') df = pd.read_html(str(table))[0] # 转为 DataFrame
2. 常见异常类型识别
从 HTML 提取的数据常见异常包括:
立即学习“前端免费学习笔记(深入)”;
- 格式错误:数字字段含非数字字符(如 “123元”、”N/A”)。
- 缺失值:空单元格、<td></td> 或占位符(如 “–“、“暂无”)。
- 极端值:明显偏离正常范围(如年龄为 200,价格为 -999)。
- 重复数据:同一记录多次出现,可能是页面分页重复渲染导致。
- 编码乱码:中文显示为“??”或乱码,影响文本分析。
3. 异常检测方法
- 数值型字段:使用统计方法识别离群点。
- Z-score:绝对值大于 3 视为异常。
- IQR 法:超出 Q1 – 1.5×IQR 或 Q3 + 1.5×IQR 的值为异常。
- 类别型字段:检查非法取值或拼写错误(如“男”、“男性”、“M”混用)。
- 时间字段:验证日期格式是否统一,是否存在未来时间或逻辑错误(如出生日期晚于当前日期)。
- 文本长度:字段内容过长或过短(如手机号为 3 位)可视为异常。
4. 异常处理策略
发现异常后,根据业务场景决定处理方式:
- 清洗替换:去除单位符号(如“元”、“kg”),将“–”替换为 NaN。
- 填充缺失:使用均值、中位数或前后行数据填充。
- 删除异常行:对无法修复的极端错误记录直接剔除。
- 人工复核:对疑似异常但不确定的数据打标签,交由人工确认。
- 正则校验:用正则表达式规范字段格式(如邮箱、电话)。
基本上就这些。关键是从 HTML 提取数据时保持结构清晰,尽早做类型转换和清洗,再结合统计与规则方法识别异常。自动化脚本配合人工抽查,能有效提升数据质量。


