副标题[/!--empirenews.page--]
12月已开始了,离2018年的结束也就半个多月的时间了,还记得年初立下的flag吗?
完成了多少?相信很多人和我一样,抱头痛哭...
本次利用猫眼电影,实现对2018年的电影大数据进行分析。

一、网页分析
01 标签

通过点击猫眼电影已经归类好的标签,得到网址信息。
02 索引页

打开开发人员工具,获取索引页里电影的链接以及评分信息。
索引页一共有30多页,但是有电影评分的只有10页。
本次只对有电影评分的数据进行获取。
03 详情页

对详情页的信息进行获取。
主要是名称,类型,国家,时长,上映时间,评分,评分人数,累计票房。
二、反爬破解

通过开发人员工具发现,猫眼针对评分,评分人数,累计票房的数据,施加了文字反爬。

通过查看网页源码,发现只要刷新页面,三处文字编码就会改变,无法直接匹配信息。
所以需要下载文字文件,对其进行双匹配。
- from fontTools.ttLib import TTFont
-
- #font = TTFont('base.woff')
- #font.saveXML('base.xml')
- font = TTFont('maoyan.woff')
- font.saveXML('maoyan.xml')
将woff格式转换为xml格式,以便在Pycharm中查看详细信息。
利用下面这个网站,打开woff文件。
- url: http://fontstore.baidu.com/static/editor/index.html
可以得到下面数字部分信息(上下两块)。
在Pycharm中查看xml格式文件(左右两块),你就会发现有对应信息。

通过上图你就可以将数字6对上号了,其他数字一样的。
- def get_numbers(u):
- """
- 对猫眼的文字反爬进行破解
- """
- cmp = re.compile(",n url('(//.*.woff)') format('woff')")
- rst = cmp.findall(u)
- ttf = requests.get("http:" + rst[0], stream=True)
- with open("maoyan.woff", "wb") as pdf:
- for chunk in ttf.iter_content(chunk_size=1024):
- if chunk:
- pdf.write(chunk)
- base_font = TTFont('base.woff')
- maoyanFont = TTFont('maoyan.woff')
- maoyan_unicode_list = maoyanFont['cmap'].tables[0].ttFont.getGlyphOrder()
- maoyan_num_list = []
- base_num_list = ['.', '3', '0', '8', '9', '4', '1', '5', '2', '7', '6']
- base_unicode_list = ['x', 'uniF561', 'uniE6E1', 'uniF125', 'uniF83F', 'uniE9E2', 'uniEEA6', 'uniEEC2', 'uniED38', 'uniE538', 'uniF8E7']
- for i in range(1, 12):
- maoyan_glyph = maoyanFont['glyf'][maoyan_unicode_list[i]]
- for j in range(11):
- base_glyph = base_font['glyf'][base_unicode_list[j]]
- if maoyan_glyph == base_glyph:
- maoyan_num_list.append(base_num_list[j])
- break
- maoyan_unicode_list[1] = 'uni0078'
- utf8List = [eval(r"'u" + uni[3:] + "'").encode("utf-8") for uni in maoyan_unicode_list[1:]]
- utf8last = []
- for i in range(len(utf8List)):
- utf8List[i] = str(utf8List[i], encoding='utf-8')
- utf8last.append(utf8List[i])
- return (maoyan_num_list ,utf8last)
三、数据获取
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|