推荐用 beautifulsoup 的 get_text() 提取纯文本,再用 re.sub(r'\s+', ' ', text).strip() 精细清理;显式设置响应编码或用 chardet.detect() 处理乱码;pandas 逐列做字段对齐、类型转换与空值处理;基于业务主键去重并校验逻辑异常。

处理 HTML 标签与空白字符
爬取的网页内容常混杂大量 HTML 标签、换行符、制表符和多余空格,直接保留会干扰后续分析。推荐用 BeautifulSoup 的 get_text() 方法提取纯文本,它能自动合并连续空白并剔除脚本、样式等非可见内容。若需更精细控制,可配合正则表达式清理:re.sub(r'\s+', ' ', text).strip() 将多空格/换行统一为单空格并去首尾空白。
识别并修正编码与乱码
中文乱码多因响应编码未正确指定。发起请求时显式设置 response.encoding(如 'utf-8' 或 'gbk'),或使用 response.apparent_encoding 让 requests 自动推测。若仍出现符号,说明原始字节流已损坏,可尝试用 chardet.detect() 重新检测编码后解码,再用 encode('utf-8').decode('utf-8', errors='ignore') 容错处理。
结构化清洗:字段对齐与类型转换
从表格或列表中提取的数据易出现字段缺失、顺序错位、类型混杂。建议先用 pandas.DataFrame 加载原始数据,再逐列处理:对价格类字段用 str.extract(r'(\d+\.?\d*)') 提取数字并转 float;对日期字段用 pd.to_datetime() 统一格式;对空值统一用 fillna('未知') 或 dropna() 剔除。关键是要确保同一列数据语义一致、类型统一。
去重与逻辑校验
爬虫可能因翻页异常或 URL 重复采集到重复记录。可用 df.drop_duplicates(subset=['title', 'url']) 基于业务主键去重。此外加入简单逻辑判断:如价格为负、发布时间早于建站时间、手机号位数不对等,用布尔索引快速筛出异常行,人工复核或按规则修正。清洗不是越干净越好,而是保留合理变异,剔除明显错误。
立即学习“Python免费学习笔记(深入)”;










