题记
本文旨在记录爬取猫眼电影国内票房榜单的过程,以及对脚本内字体文件反爬函数的说明。
环境
系统: Windows 10
Python版本: Python 3.7
爬取时间: 2019.3.19
难点说明
爬取猫眼电影的过程中,发现在票房数据出现了乱码,经百度搜索相关信息,阅读多篇文章,才知道爬虫的博大精深。
- 下载一个基本字体路径,找到它对应的数字及其编码
- 每一次爬取网页时,都要先下载该网页的字体文件,然后与基本字体文件作对比,获得爬取网页的数字对应编码。
本次主要参考了: Python爬虫杂记 - 字体文件反爬(二)
代码说明
from fontTools.ttLib import TTFont
def get_maoyan_dict(self, url):
# url: 字体文件下载链接
#
# 首先下载新的字体文件
font_woff = requests.get(url, stream=True)
with open('maoyan.woff', 'wb') as w:
for bunk in font_woff:
w.write(bunk)
# 使用fonttools对基本字体文件做解析
base_font = TTFont('basefont.woff')
base_num = ['8', '7', '9', '0', '1', '5', '4', '6', '3', '2']
base_code = ['uniF860', 'uniF408', 'uniEF2B', 'uniF875', 'uniE03A', 'uniEA55', 'uniEE0E', 'uniF7A4', 'uniE3B1', 'uniF813']
# 将新下载的字体文件与基本字体文件做对比
onlineFonts = TTFont('maoyan.woff')
uni_list = onlineFonts.getGlyphNames()[1