看了爬取猫眼电影的教程
于是自己动手试了一下
网址:http://maoyan.com/board/4
简单分析下这网站 数据都放在源码里
1.requests.get 获取网站源码
2.pattern 正则匹配
3.write 写入文件
4.多进程运行 (大题小做 杀鸡用牛刀 纯属试试)
Github MaoYanTop100.py
Top100榜还是比较轻松的
心血来潮想试试其他榜单 如最受期待榜
按同样的思路来 结果懵逼了
数字进行了反爬虫加密
网页源代码中并没有本月新增想看XXX人和总想看XXX人的数字
只有一串class= stoneFont格式的乱码——红框位置
F12 也显示不出来
遂百度
原来这些数字经过动态加载字体后呈现的
简单的说就是数字通过字体呈现一定的样式,如“微软雅黑”
而我们无法直接获得数字 需要通过字体进行解密
反反爬虫
下载加载的字体 xxxx.woff 右键 copy like address
粘贴到新页面 即可下载
通过FontEditor打开
得到了相应乱码与数字的对应关系
观察网页源代码数字乱码与fonteditor中的乱码
发现网页中的乱码和fonteditor中的乱码 后四位是一样的
那么只要做前缀替换就行
思路
1、 获取下载网站font字体包 网页源代码中有相应的字体包 正则匹配下载
2、获取font字体包中导入fonteditor 观察得到乱码与数字的关系 (这里需手动设置对应关系 ),如“uniF7C5”对应数字“1”
3、每次登陆此网站 字体都会动态更新 先登陆一次 下载一个font作为baseFont
设置baseFont与数字的关系 两个列表 baseNumList和baseUniCode
下载新的字体newFont 比较baseFont和newFont的glyf属性
如相等则是同一数字 将newFont通过baseFont映射到数字上
将newUniCode如“uniF7C5”替换成“”
再查找网页源代码 进行替换 将“”替换成映射的明文数字上
4、之后就和爬取Top100榜的思路一模一样
总结下
最受期待榜的网页源代码进行了反爬虫加密——动态字体加载
重点就在如何将动态加载字体的UniCode转换成明文数字
源码 Github