Python爬虫——大众点评,爬取用户电影评论,CSS字体加密


最近一直在学习爬虫,刚好到了反爬这一块,听朋友说大众点评的反爬挺厉害,分析了一下发现还是老熟人,字体反爬,没错,与猫眼电影一样也是字体反爬,感兴趣的朋友可以点 猫眼电影了解详情,不过和猫眼的字体反爬不同,大众点评是通过css文件来进行加密,下面就让我们一起来分析分析吧

爬取网址

本次爬取网址:华联影城(平谷店)

字体加密原理分析

这是网页显示的评论
在这里插入图片描述
点击检查打开开发者工具,可以看到一条评论有个别字是使用标签代替的,然后通过类选择器进行css加密
在这里插入图片描述

既然知道了css加密,那么我们首先要找的就是CSS文件了,右击点击查看源代码,这就是我们要找的css加密文件了
在这里插入图片描述
打开这个文件,可以看到密密麻麻的一堆标签,这就是每个类对应的字体坐标
在这里插入图片描述
找到坐标之后,我们还需要找到他加密的字体文件,字体文件的链接也藏在这个文件中,Ctrl+F搜索 .svg,一共有3个文件,都是字体加密的文件
在这里插入图片描述
打开之后的样子
在这里插入图片描述
查看源代码
在这里插入图片描述
这里我们只要注意y轴就行了,x轴是直接通过除以字体大小得出来,不过y会有一些细微的差别,我们只需要取相近的值,就能判断是哪个字了

代码

分析完后,我们就开始爬取吧,因为爬取的数据也不是很多,所以我们直接使用requests模块进行爬取,简单的代码我就不上了,直接上干货

获取3个字体加密文件

取出.css文件,在依次取出里面的3个.svg文件,最后组成映射字典保存起来

def get_encryption_font(self, html):
        """获取加密字体"""
        font_href = "http:" + html.xpath("//link[@rel='stylesheet'][2]/@href")[0]
        # 发送请求下载字体
        encryption_font = requests.get(font_href, headers=self.headers).text
        encryption_font_list = re.findall(r"(\w+)\{background:-(\d+).0px -(\d+).0px;\}", encryption_font)
        self.encryption_font_map_dict = {
   font_tuple[0]: (font_tuple[1], font_tuple[2]) for font_tuple in
                                         encryption_font_list
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值