二手车电商平台(如58同城)为保护车辆价格、里程等敏感信息,常采用自定义字体(woff/ttf)将数字渲染为乱码符号,导致普通爬虫无法直接获取真实数值。本项目旨在解决“字体反爬”场景下的数据采集难题。业务背景为二手车市场行情分析、价格监测、车商竞品调研等,需要批量获取真实价格和车辆参数。通过自动下载动态字体文件并建立OCR映射,可稳定还原出正确的数字和单位(如“8.5万”),适用于二手车、招聘、房产等多个行业的公开数据采集
点击空白处退出提示
语言技术
Python系统类型
Windows行业分类
电商、企业服务参考价格
500演示地址
https://github.com/nianchen8/58-secondhand-car-font-anti-crawler
二手车电商平台(如58同城)为保护车辆价格、里程等敏感信息,常采用自定义字体(woff/ttf)将数字渲染为乱码符号,导致普通爬虫无法直接获取真实数值。本项目旨在解决“字体反爬”场景下的数据采集难题。业务背景为二手车市场行情分析、价格监测、车商竞品调研等,需要批量获取真实价格和车辆参数。通过自动下载动态字体文件并建立OCR映射,可稳定还原出正确的数字和单位(如“8.5万”),适用于二手车、招聘、房产等多个行业的公开数据采集
全站自动翻页:自动解析第一页的分页器,获取总页数并逐页爬取,支持测试模式(限制页数)和全量模式。
动态字体下载与解析:从HTML中提取字体文件(Base64内嵌或URL),保存为本地.ttf文件。
字体到真实字符的映射:使用fontTools读取字体中的所有Unicode编码,通过Pillow将每个字符渲染成白底黑字的图片,再利用easyocr识别图片中的真实数字/汉字,建立映射字典。
价格自动解密:爬取卡片中的加密价格字符串,根据映射字典自动替换为真实价格。
数据导出Excel:将标题、标签、上牌年份/里程、解密后的价格等字段保存为结构化的Excel文件,便于分析和报表生成。
我负责的任务:独立完成整个项目的需求分析、代码编写、测试与优化,包括异常处理和重试机制。
技术栈:Python + requests(网络请求)、lxml(XPath解析)、re(正则提取字体)、fontTools(字体解析)、Pillow(图像生成)、easyocr(OCR识别)、openpyxl(Excel导出)。
实现亮点:
动态处理每次请求可能不同的字体文件(适用于实习僧等网站)。
完善的异常处理:字体下载失败或OCR识别失败时自动降级,不影响主流程。
自动清理临时字体文件,不残留垃圾。
支持测试模式,避免全量爬取被封IP。
从分页器中动态提取查询参数,确保翻页URL正确构造。
难点与解决:字体文件中每个字符的Unicode编码与真实数字无直接对应,通过OCR识别图片方式建立映射,准确率可达95%以上。





评论