将猫眼电影网页中票房、评分等数据的乱码转化成正常数字。

maoyan-font的Python项目详细描述


maoyan-font

简介

将猫眼电影网页中票房、评分等数据的乱码转化成正常数字。

安装

pip install maoyan-font

或者

git clone https://github.com/digglife/maoyan-font
cd maoyan-font
python setup.py install

用法

frommaoyan_fontimportMaoyanFontParserparser=MaoyanFontParser()font=parser.load('http://vfile.meituan.net/colorstone/294024cb386679d8e940022d5e3b6a162088.woff')font.normalize('\uf8bc.\ueb54')# '9.1'

本模块附带了一个命令行工具 mybox, 用于展示模块的用法。

$ mybox https://maoyan.com/films/249342
{'name': '海王', 'box': '468万'}

$ mybox -h

usage: mybox [-h] url

get box office info via url

positional arguments:
  url         movie url to parse

optional arguments:
  -h, --help  show this help message and exit

原理

猫眼为了保护重要数据,对评分和票房数据采用了 网络字体反爬机制。概括而言,就是 HTML 中的返回无对应字符的 Unicode 代码(Unicode 私人使用区), 然后使用网络字体在浏览器中渲染出代码对应的数字。

每次请求电影页面,下载的 woff 都不同,每个 woff 中的 Unicode 代码对应的数字也都不同。比如,woff A 中,\uE851 对应的是 数字 0, woff B 中 数字0 对应的代码可能是 \uE748,没有规律可言。 但是字体的字形数据 (Glyphs) 是不变的,我们只要获取猫眼的任一 woff,找出字形和数字的对应关系,保存为字典,然后每次抓取时,解析出新字体中的字形,在字典中查询即可获取真正的数字。

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java试图使用JavaFX2实现“插入符号浏览”   三个给定集合中两个集合的java交集?   数组如何在java中从csv文件的元素集中随机选择?   java从变量插入到Jtable,从DB插入   java如何在静态方法的末尾返回变量   java另一个JPA问题   java收藏家。按两列分组不起作用   将java值改为下一个千,而不是最近的千   JavaSpringDataREST:如何通过另一个对象的键进行搜索?   java Spring MVC:HTTP Status 404/SimpleMVC/WEB_INF/HelloPage。jsp   java应用程序光盘在OpenJdk中可用吗?   java在数组中的特定点添加字符   java如何用Mockito模拟方法调用   java从JList获取数据   我们可以在Java中搜索不同IMAP电子邮件帐户中的电子邮件吗?   计算表达式的数学Java算法   未构建Maven的java服务器组件   java调用部署在远程计算机上的会话bean的方法   java XML:迭代地获取每个节点元素的节点值或文本内容