爬取大众点评评论-字体加密解析-下-代码解析篇

本文详细介绍了如何爬取并解析大众点评评论中的字体加密内容。首先,通过Python爬虫获取页面数据,使用XPath提取用户评论信息。接着,解析CSS文件,获取字体文件和坐标信息,生成对照表。然后,通过比较SVG文件中的坐标,进行文字替换,最终对应用户和评论,完成评论的完整解析。文章强调了解密过程中遇到的动态变化和解决方案,并分享了完整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20-8-28: 竟然更新了6位css类名, 不过稍微修改下正则就可以了
上一篇的链接👇
https://blog.youkuaiyun.com/weixin_43553295/article/details/108242732

获取页面数据

首先写一个简单的爬虫, 来获取页面数据

class DaZhongDianPing:

    def __init__(self):
        self.s = requests.session()

        self.url = "http://www.dianping.com/shop/k9oYRvTyiMk4HEdQ/review_all"

        self.headers = {
   
            'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
            "Cookie": "xxxxxx"
        }

        self.html = None

    def get_html(self):
        """获取数据"""
        response = self.s.get(self.url, headers=self.headers)
        self.html = response.text

记得添加最关键的user-agentCookie, 否则你连最基本的网页都获取不到, 这里我就不把自己的cookie放出来了, 自己登陆后随便打开一条请求后复制即可

在这里插入图片描述

使用xpath来获取用户评论信息

    def get_data_by_xpath(self):
        """使用xpath获取用户信息"""
        html_xpath = etree.HTML(self.html)
        # 获取评论以及用户
        user_data_list = html_xpath.xpath(
            "//li/div[@class='main-review']//a[@class='name']/text()|"
            "//li/div[@class='main-review']//span[@class='name']/text()")
        user_data_list = [x.strip() for x in user_data_list]
        user_comment_list = html_xpath.xpath(
       		"//ul/li/div[@class='main-review']/div[@class='review-words']|"
            "//ul/li/div[@class='main-review']/div[@class='review-words Hide']")
        if len(user_data_list) == len(user_comment_list):
            print("以使用xpath获取信息...")
        else:
            print("获取用户名个数为: ", len(user_data_list))
            print("获取评论信息个数为: ", len(user_comment_list))
            raise SyntaxError("用户评论信息不匹配, 请检查xpath...")
        # pprint(name) ",口味"
        # 获取用户评论div 转html代码为汉字
        comments_html_list = [html.unescape(tostring(x).decode('utf-8')) for x in user_comment_list]
        # pprint(comments_html_list)
        return comments_html_list, user_data_list

分别在网页中取出用户名和他所发的评论, 因为要直接获取div里的所有内容, 使用xpathtext()就明显不够用了, 直接使用tostring()方法将xpath对象转换为字符串格式, 在使用unescape()html代码中的字符转换为汉字, 达到能将div中标签和内容一起取出来的效果
在这里插入图片描述

解密特殊标签

获取文件, 提取css类

首先获取css文件内容, 类的坐标还有.svg文件都在css文件中

    def get_css_file(self):
        """获取css文件名"""
        # 获取字体文件
        css_file_name = re.search(r'<link rel="stylesheet" type="text/css" href="(//s3plus.+?\.css)', self.html).group(
            1)
        self.css_file_name = css_file_name[css_file_name.rfind('/') + 1:]
        print("下载文件...", css_file_name)
        # 下载css文件
        self.css = self.s.get("http:" + css_file_name).text
        with open(os.path.</
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值