写点什么

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

作者:梦想橡皮擦
  • 2022 年 8 月 06 日
  • 本文字数:674 字

    阅读完需:约 2 分钟

⛳️ 实战起点


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



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


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



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



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

⛳️ 实战编码

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


import reimport 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 iores_font = requests.get(font_url)font = TTFont(io.BytesIO(res_font.content))print(font)
# 编码对应关系font_cmap = font.getBestCmap()print(font_cmap)
复制代码


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


发布于: 刚刚阅读数: 4
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
【字体反爬】的起点,月票数解析,一个小小的Python案例_Python_梦想橡皮擦_InfoQ写作社区