招聘平台(如实习僧)为保护岗位薪资、企业规模等敏感信息,采用动态字体反爬技术。每次请求返回的页面都使用不同的自定义字体(woff文件),将关键数字和文字渲染为乱码符号,导致普通爬虫无法直接获取真实数据。本项目旨在解决“动态字体反爬”场景下的数据采集难题。业务背景包括招聘市场分析、薪资监测、岗位需求统计等,需要批量获取真实的招聘信息。通过每次请求时动态下载对应字体文件并建立OCR映射,可稳定还原出正确的薪资、天数等数值,适用于招聘、房产、二手车等多个行业。
点击空白处退出提示
招聘平台(如实习僧)为保护岗位薪资、企业规模等敏感信息,采用动态字体反爬技术。每次请求返回的页面都使用不同的自定义字体(woff文件),将关键数字和文字渲染为乱码符号,导致普通爬虫无法直接获取真实数据。本项目旨在解决“动态字体反爬”场景下的数据采集难题。业务背景包括招聘市场分析、薪资监测、岗位需求统计等,需要批量获取真实的招聘信息。通过每次请求时动态下载对应字体文件并建立OCR映射,可稳定还原出正确的薪资、天数等数值,适用于招聘、房产、二手车等多个行业。
全站自动翻页:从页面提取总页数,逐页爬取招聘信息。
动态字体下载与解析:每次请求页面后,从HTML中提取本次特有的字体文件URL(woff格式),下载到本地。
字体到真实字符的映射:使用fontTools读取字体中的所有Unicode编码,通过Pillow将每个字符渲染成白底黑字的图片,再利用easyocr识别图片中的真实数字/汉字,建立本次请求专属的映射字典。
数据解密与提取:遍历岗位卡片,提取职位、公司、薪资、城市、每周天数、持续月数、标签、行业、企业规模、企业描述等字段,其中加密部分通过映射字典解密。
数据导出Excel:将所有字段保存为结构化的Excel文件,便于分析和报表生成
我负责的任务:独立完成需求分析、代码编写、测试与优化,包括异常处理和自动清理。
技术栈:Python + requests(网络请求)、lxml(XPath解析)、re(正则提取字体URL)、fontTools(字体解析)、Pillow(图像生成)、easyocr(OCR识别)、openpyxl(Excel导出)。
实现亮点:
动态处理每次请求不同的字体文件,适应实习僧的高频变化策略。
完善的异常处理:字体下载失败或OCR识别失败时自动降级,不影响主流程。
自动清理临时字体文件,不残留垃圾。
支持全页大规模数据采集,代码结构清晰,注释详细。
难点与解决:每次请求的字体文件都不同,无法复用映射表。解决方法是每次请求页面后立即下载对应的字体文件,建立新映射,然后解密当前页数据,确保每页都能正确还原。





评论