2021年挖掘猫眼专业版电影票房数据

概述

自己看着玩玩,如有侵权,请联系我,立刻删除
在这里插入图片描述

爬取关键点
1.猫眼票房字体动态加密,需要破解
2.截止今日20210101-20211214,有350天左右,需要ip代理池,Proxypool,代理池搭建链接如下:
通过github搭建代理池
3.需要构造浏览器头段,user-agent
随机生成浏览器
4.猫眼专业版,中间有几天浏览器页面看不到,采用后面额外处理的方法
5.主要采用selenium+pyquer+request+无头Edge的方法

提前告知
缺点:爬取350页需要2小时,主要是留给浏览器加载JS的时间,每页留了10s

破解动态字体加密 font.py

关键点,需要对woff文件由一定的了解
猫眼加密文件为<.woff>文件,解密如下:

  1. 使用requests,下载woff文件,
  2. 采用fontTools,获取字体编码
  3. 采用matplotlib,绘制编码出来的坐标图
  4. 采用ddddocr(一种轻便OCR),识别图像数据
  5. 最终:编码与数字对应起来,得到编码映射字典
#font.py
from fontTools.ttLib import TTFont
import matplotlib.pyplot as plt
import numpy as np
import ddddocr
from os import remove


def get_fontdict(woff_path, woffname):
    #打开woff文件,获取编码列表,字体坐标列表
    base_font = TTFont(r'{}\{}'.format(woff_path, woffname))

    #获取字体编码
    #['uniEA9E', 'uniE528', 'uniE4A0', 'uniF0D8', 'uniF19A', 'uniEC3C', 'uniF7BE', 'uniF702', 'uniEE91', 'uniEC82']
    font_name = base_font.getGlyphOrder()[2:]

    #获取每个字体编码对应的坐标
    zb = [base_font['glyf'][i].coordinates for i in font_name]

    #OCR
    ocr = ddddocr.DdddOcr()
    #识别出的数字列表
    font_id = []

    #将每个坐标绘制,绘制两个出来,并使用ocr进行识别数字
    fig, ax = plt.subplots()
    for index, one in enumerate(zb):
        x, y = [i[0] for i in one], [i[1] for i in one]
        #plt.scatte(x, y, c='r')
        plt.plot(x, y)
        x_n = [i + np.max(x) + 100 for i in x]
        #plt.scatter(x_n, y, c='r')
        plt.plot(x_n, y)
        plt.fill(x, y, 'black')
        plt.fill
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值