【字体反爬】的起点,月票数解析,一个小小的Python案例【2】
【摘要】 @[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)