【字体反爬】的起点,月票数解析,一个小小的Python案例【2】

举报
梦想橡皮擦 发表于 2022/08/04 11:28:04 2022/08/04
【摘要】 @[toc] ⛳️ 实战起点本次要采集的目标站点为 https://Python脱敏处理.qidian.Python脱敏处理/rank/yuepiao/。月票榜单的数字为特殊字体,并且 class 看起来为一个加密字符串。测试之后发现,字体样式恰好是字体文件名称,并且每次刷新都会发生变化。下载字体矢量图之后,查看编码发现只是简单的中英文对照关系。字体矢量图解析就非常简单了,下面我们优先获取字...

@[toc]

⛳️ 实战起点

本次要采集的目标站点为 https://Python脱敏处理.qidian.Python脱敏处理/rank/yuepiao/

月票榜单的数字为特殊字体,并且 class 看起来为一个加密字符串。

测试之后发现,字体样式恰好是字体文件名称,并且每次刷新都会发生变化。

下载字体矢量图之后,查看编码发现只是简单的中英文对照关系。

字体矢量图解析就非常简单了,下面我们优先获取字体文件。

⛳️ 实战编码

接下来获取网页源码,然后尝试提取其中的字体文件。

import re
import requests

base_url = 'https://www.qidian.com/rank/yuepiao'


headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
    'Host': 'www.qidian.com'
}
response = requests.get(base_url, headers=headers)
# print(response.text)

font_url = re.findall(r"\); src: url\('(.*?)'\) format\('woff'\)", response.text)[0]

print(font_url)

得到的字体文件如下所示。

https://qidian.gtimg.com/qd_anti_spider/wWZgjsqu.woff

其实到这里本案例已经结束了,当你获取到字体文件只有,可以对其进行存储与解析。

from fontTools.ttLib import TTFont

import io
res_font = requests.get(font_url)
font = TTFont(io.BytesIO(res_font.content))
print(font)

# 编码对应关系
font_cmap = font.getBestCmap()
print(font_cmap)

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 677 篇原创博客

从订购之日起,案例 5 年内保证更新

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。