@[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)