针对大众点评网上商铺评论字体替换反爬的反反爬

本文探讨了大众点评网上商铺评论中字体替换的反爬策略,由于涉及603个字符,手动匹配不可行。提出了一种解决方案,包括下载字体文件,转换为XML并使用OCR识别文字,从而找出编码与汉字的对应关系,实现反反爬。
摘要由CSDN通过智能技术生成

针对大众点评网上商铺评论字体替换反爬的反反爬

字体替换的反爬,在之前网站出现过,如淘宝、猫眼等。但是主要针对于数字字体替换,由于数字就十个,完全可以手动分析字体文件,找出编码与数字的关系。但是,大众点评评论中的字体文件中的文字共603个,手动写对应关系是不可能的事。

下面将介绍一种可行的方案:

这是进入商铺页面 http://www.dianping.com/shop/130096343
在这里插入图片描述
我们可以看到页面源代码中有许多的svgmtsi标签,但是文字都无法正常显示,点击标签可以看到右边的css属性

.review {
   
    font-family: 'PingFangSC-Regular-review';
}

我们看到svgmtsi这样的标签都是使用的自定义字体,字体定义一般都是在css文件中定义,我们需要找到css文件。
在这里插入图片描述
字体定义都是以@font-face形式定义,在上图红框中就是PingFangSC-Regular-review字体的定义。我们可以看到有3个url链接,chrome浏览器支持的是.woff字体

@font-face {
   
    font-family: "PingFangSC-Regular-review";
    src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/0ddcf35f.eot");
    src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/0ddcf35f.eot?#iefix") format("embedded-opentype"),url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/0ddcf35f.woff");
}

根据这个链接就可以下载字体文件。在代码中链接前面记得加上http:
下面就是以上内容的代码:(函数返回的是字体路径,在后面解析字体会用到这个路径)

def downloadFontFile(): #向解析页面获得css的href,发送请求,对css正则匹配出字体的url,下载字体文件
    cssUrl = "http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/92b88886eb6a3d468078043ccd49b99e.css"
    css_response = seedRequest(cssUrl)
    fontUrl = re.findall('@font-face{font-family: "PingFangSC-Regular-review";src.*?format.*?url\("(.*?)"\);}',css_response.text,re.S)[0]
    print(fontUrl)
    font_response = seedRequest("http:"+fontUrl)
    fontPath = os.path.join(os.getcwd(),os.path.basename(fontUrl))
    with open(fontPath,"wb") as fp:
        fp.write(font_response.content)
    return fontPath

在下载完字体后,可

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值