python爬虫实战—爬取大众点评评论(加密字体)
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
查看到下面有些字体经过加密处理 刷新页面会发现 每一次加密的字体是不一样的
查看网页源代码 查看所有css 发现这个css就是我们想要用的文件 那么现在我们就要用代码来获取到这个css文件的urlCookie自行更换
代码实现:
打开这个css文件 发现上一个页面加密的字体的类 在这个css文件中可以用查找到 后面有对应的坐标
查询css文件中 有没有我们想要的字体文件 command + f 或者 ctrl
+f 查询 发现文件中有三个字体文件 分别打开三个文件的url 发现只有一个字体映射文件是正确的
打开三个字体文件的url 发现正确的就是最多的 也就是最大的一个文件 我们不能凭着url来判断哪个字体文件更大 所以要访问 根据返回的数据 来判断正确的文件是哪个 接下来就要访问url来获取字体文件的内容 然后将最大的字体文件内容存储起来 方便替换
7.由于是动态刷新 将网页数据保存到本地并分析 找到(x,y)和字体的映射关系
取出字体文件后可以在本地进行手动的查询 摸索文字对应关系 因为大众点评每一次刷新都是动态更改css或者svg文件内容 包括每次刷新加密的字都不同 所以将一个保存到本地 根据本地这一个固定的来尝试 尝试成功后动态获取 经过多次尝试 发现规律 两个数字第一个数字除以14
就是文字的下标
此图数字为-406 除以 14 下标 就是29 第二个数字就在两个y值中间 根据规律 匹配出所有文字的映射关系
!!!此段代码只是为了保存数据方便分析和爬取数据的代码无关 !!!
8.根据找到的规律 取出字体文件中所有字体 还有位置 存储到字典中
用正则在字体文件中取出数字的x值(即在本行的下标)y值用一个元组来存储 判断时 获取加密文字的坐标y值是否在元组两个值中间即可
取出所有的数据 保存到类中的字典
代码实现:
存储后的字典格式为 value值为字体内容 x为下标 y值为一个元组 用来存储在哪两个数字之间
依旧使用正则来取出所有的数据 查询到的数据 再存储到类中的一个字典
代码实现:
字典的格式为:
现在取出网页中被加密的字体的class属性 使用xpath取出就可以
代码实现:
因为现在已经取出了两个字典 一个有加密字体的class属性还有字体的x,y的值 另一个字典中有这个加密字体对应的文字 刚刚我们也取出来所有被加密文字的class属性 只需要循环判断 取出对应的字就可以来
代码实现:
将原来保存的这个网页的text内容中加密的文字 替换为正常的文字
代码实现:
这段代码在最后的运行方法中 就是主方法中
最难的加密已经弄出来了 现在就是一个简单的取数据就可以了 因为大众点评的长评论和短评论存储的xpath不同 所以需要一个小判断 直接看代码吧
代码实现:
代码实现:
代码实现:
代码如下:
运行代码 查看数据即可 控制台打印以及保存到本地的csv文件 感谢你的观看 希望对你有所帮助
注:网站的反扒策略一直在变 有可能一小时前可以 有可能一小时后就不能使用了