我去!爬虫遇到字体反爬,哭了!
今天准备爬取某某点评店铺信息时,遇到了『字体』反爬。比如这样的:
可以看到这些字体已经被加密(反爬)
竟然遇到这种情况,那我就带大家如何去解决这类反爬(字体反爬类)
01 网页分析
在开始分析反爬之前,先简单的介绍一下背景(爬取的网页)
爬取的某某点评的店铺信息。一开始查看网页源码是这样的
这种什么也看不到,咱们换另一种方式:通过程序直接把整个网页源代码保存下来
获取到的网页源码如下:
比如这里看到评论数(4位数)都有对应着一个编号(相同的数字编号相同),应该是对应着网站的字体库。
下一步,我们需要找到这个网站的字体库。
02 获取字体库
这里的字体库建议在目标网站里面去获取,因为不同的网站的字体库是不一样,导致解码还原的字体也会不一样。
1、抓包获取字体库
在浏览器network里面可以看到一共有三种字体库。(三种字体库各有不同的妙用,后面会有解释)
把字体库链接复制在浏览器里面打开,就可以把字体库下载到本地。
2、查看字体库
这里使用FontCreator的工具查看字体库。
下载地址:
https://www.high-logic.com/font-editor/fontcreator/download
这里需要注册,邮箱验证才能下载。
安装之后,把刚刚下载的字体库在FontCreator中打开
可以看到字体的内容以及对应的编号。
比如数字7对应F399、**数字8对应F572 ,**咱们在原网页和源码对比,是否如此???
可以看到,真是一模一样对应着解码就可以还原字体。
3、为什么会有三个字体库
在查看加密字体的CSS样式时,方式有css内容是这样的
字体库1:d35c3812.woff 对应解码class为 shopNum
字体库2:084c9fff.woff 对应解码class为 reviewTag和address
字体库3:73f5e6f3.woff 对应解码class为 tagName
也就是说,字体所属的不同class标签,对应的解密字体库是不一样的,这里不得不说一句:太鸡贼了
咱们这里获取的评论数,clas为shopNum,需要用到字体库d35c3812.woff
03 代码实现解密
1、加载字体库
既然我们已经知道了字体反爬的原理,那么我们就可以开始编程实现解密还原。
加载字体库的Python库包是:fontTools ,安装命令如下:
pip install fontTools
将字体库的内容对应关系保存为xml格式
code和name是一一对应关系
可以看到网页源码中的编号后四位对应着字体库的编号。
因此我们可以建立应该字体对应集合
建立好映射关系好,到网页源码中去进行替换
这样我们就成功的将字体反爬处理完毕。后面提取内容大家基本都没问题。
2、完整代码
输出结果:
可以看到加密的数字全部都还原了。
04 小结
本文中主要讲解了如此处理字体反爬问题,并以某某点评为例去实战演示分析。文中处理的数字类型,大家可以尝试去试试中文如何解决。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、Python练习题
检查学习结果。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。