• 【爬虫逆向】Python逆向采集猫眼电影票房数据


    进行数据抓包,因为这个网站有数据加密

    !pip install jsonpath
    
    1. Collecting jsonpath
    2. Downloading jsonpath-0.82.2.tar.gz (10 kB)
    3. Preparing metadata (setup.py) ... done
    4. Building wheels for collected packages: jsonpath
    5. Building wheel for jsonpath (setup.py) ... done
    6. Created wheel for jsonpath: filename=jsonpath-0.82.2-py3-none-any.whl size=6724 sha256=0b69428c90f399b387b7b81227fc625ad5099b67ef9eba6d38787a548034cb12
    7. Stored in directory: /home/mw/.cache/pip/wheels/2c/2a/fa/87e26ec807b9a21dd0464eb1319cc3ad51b0c9e505fe6b7396
    8. Successfully built jsonpath
    9. Installing collected packages: jsonpath
    10. Successfully installed jsonpath-0.82.2
    1. # 导入需要的库
    2. import base64
    3. import hashlib
    4. import math
    5. import random
    6. import time
    7. import jsonpath
    8. import pandas as pd
    9. import requests

    对User-Agent与signKey分别进行解密,这里就不扣js了,主要是找规律,大家有什么问题可以给我留言,我看见都会回的

    1. def getData():
    2. url = 'https://piaofang.maoyan.com/dashboard-ajax/movie'
    3. useragents = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183'
    4. headers = {
    5. 'User-Agent':useragents,
    6. 'Referer':'https://piaofang.maoyan.com/dashboard/movie'
    7. }
    8. useragents = str(base64.b64encode(useragents.encode('utf-8')),'utf-8')
    9. index = str(round(random.random() * 1000))
    10. times = str(math.ceil(time.time() * 1000))
    11. # "method=GET&timeStamp={}&User-Agent={}&index={}&channelId=40009&sVersion=2&key=A013F70DB97834C0A5492378BD76C53A"
    12. content = "method=GET&timeStamp={}&User-Agent={}&index={}&channelId=40009&sVersion=2&key=A013F70DB97834C0A5492378BD76C53A".format(times,useragents,index)
    13. md5 = hashlib.md5()
    14. md5.update(content.encode('utf-8'))
    15. sign = md5.hexdigest()
    16. params = {
    17. 'orderType': '0',
    18. 'uuid': '17d79b87a00c8-015087c7514df4-5919145b-144000-17d79b87a00c8',
    19. # 时间戳
    20. 'timeStamp': times,
    21. # base64加密
    22. 'User-Agent': useragents,
    23. # 随机数 * 1000取整
    24. 'index': index,
    25. 'channelId': '40009',
    26. 'sVersion': '2',
    27. # md5加密
    28. 'signKey': sign
    29. }

    代码详情

                    电影名称   上映时间    上座率   场均人次   票房占比     综合票房   排片场次   排片占比
    0              拯救嫌疑人  上映22天   1.6%    2.3  39.2%    5.17亿  88158  28.3%
    1               无价之宝  上映13天   1.7%    2.0  22.1%    1.26亿  58656  18.8%
    2        饥饿游戏:鸣鸟与蛇之歌   上映6天   1.2%    1.8  14.1%  4310.6万  46166  14.8%
    3                 红猪   上映6天   1.7%    2.0   4.9%  1554.3万  14776   4.7%
    4           志愿军:雄兵出击  上映56天   2.7%    2.7   3.5%    8.23亿   7329   2.3%
    5              惊奇队长2  上映13天   0.3%    0.5   2.6%    1.08亿  33697  10.8%
    6              河边的错误  上映33天   1.3%    1.4   2.3%    2.97亿   8989   2.8%
    7               二手杰作  上映27天   0.9%    1.0   1.4%    1.14亿   8860   2.8%
    8               坚如磐石  上映56天   1.3%    1.3   1.4%   13.48亿   5759   1.8%
    9                 觅渡  上映87天  65.6%   58.1   1.0%  2350.1万     96  <0.1%
    10          前任4:英年早婚  上映56天   1.2%    1.1   0.9%   10.10亿   4666   1.5%
    11                追缉  上映12天   0.4%    0.5   0.7%  2061.4万  11903   3.8%
    12             莫斯科行动  上映55天   1.2%    1.2   0.7%    6.62亿   3323   1.0%
    13         家园·重返地球之战  上映20天  45.8%   52.1   0.6%   104.4万     63  <0.1%
    14              吾爱敦煌   上映6天   0.7%    0.7   0.6%   624.6万   4580   1.4%
    15               小马鞭  上映38天  14.6%   15.4   0.3%   748.1万    120  <0.1%
    16        开国将帅授衔1955     点映  38.5%  389.0   0.3%    14.6万      2  <0.1%
    17             我本是高山     点映  37.5%   69.3   0.3%  1570.0万     16  <0.1%
    18              古庙迷杀   上映6天   0.6%    0.6   0.2%   102.4万   3455   1.1%
    19           八百矿工上井冈         57.4%   73.3   0.2%   450.8万     24  <0.1%
    20              白塔之光  上映27天  12.5%   11.7   0.2%   683.3万    128  <0.1%
    21       迷你特工队之汉堡大作战  上映12天   0.3%    0.3   0.1%  1277.1万   3387   1.0%
    22  汪汪队立大功大电影2:超能大冒险  上映55天   0.7%    0.7   0.1%    1.35亿   1624   0.5%
    23              千里送鹤   上映7天   2.3%    2.4   0.1%    30.2万    396   0.1%
    24              奥本海默  上映85天   1.8%    1.9   0.1%    4.50亿    245  <0.1%
    25          贝肯熊:火星任务  上映56天   0.4%    0.4  <0.1%  8095.0万    771   0.2%
    26                单声         16.2%   39.7  <0.1%    20.0万      6  <0.1%
    27            喜马拉雅之灵   上映6天   0.7%    0.8  <0.1%    51.8万    310  <0.1%
    28               过山榜     点映  97.7%  172.0  <0.1%     8049      1  <0.1%
    29             一个和四个  上映27天   0.6%    0.5  <0.1%   484.4万    361   0.1%
    ..               ...    ...    ...    ...    ...      ...    ...    ...
    45              穿越烽火         29.0%   25.0  <0.1%    94.7万      2  <0.1%
    46              此生有约         41.1%   35.0  <0.1%    61.8万      1  <0.1%
    47              普通男女  上映20天   0.4%    0.4  <0.1%   115.6万     72  <0.1%
    48              替身纸人  上映41天   0.5%    0.5  <0.1%   458.9万     70  <0.1%
    49          我爸没说的那件事  上映20天   0.1%    0.1  <0.1%   415.8万    214  <0.1%
    50             最好的相遇  上映34天   0.2%    0.2  <0.1%  1689.6万     74  <0.1%
    51            看不见的顶峰  上映27天   0.3%    0.4  <0.1%   138.7万     49  <0.1%
    52              故园飘梦  上映31天   0.4%    0.5  <0.1%    39.1万     42  <0.1%
    53               思念爱  上映12天   0.5%    0.4  <0.1%     3.3万     29  <0.1%
    54        我是哪吒2之英雄归来  上映55天   0.2%    0.2  <0.1%  1754.2万     60  <0.1%
    55              心愿房间  上映23天   0.4%    0.5  <0.1%     9.0万     15  <0.1%
    56                洛神          2.8%    3.3  <0.1%     1.5万      3  <0.1%
    57        小美人鱼之大海怪传说  上映55天   0.1%    0.2  <0.1%   643.7万     39  <0.1%
    58           侏罗纪公园3D          2.0%    3.0  <0.1%    3.49亿      1  <0.1%
    59              失而复得  上映26天   0.1%    0.1  <0.1%   459.8万     34  <0.1%
    60              午夜迷途          0.5%    0.5  <0.1%   288.4万      8  <0.1%
    61             疯狂大营救  上映55天   0.7%    0.4  <0.1%    89.9万     11  <0.1%
    62               碧玉簪          4.0%    4.0  <0.1%     2.3万      1  <0.1%
    63     小黄人大眼萌:神偷奶爸前传          1.3%    2.0  <0.1%    2.37亿      1  <0.1%
    64            青春就这么过  上映12天   0.2%    0.3  <0.1%     8.6万      8  <0.1%
    65              党的女儿          1.3%    1.0  <0.1%     6.2万      2  <0.1%
    66          命中注定与你为敌          6.8%    2.0  <0.1%     9.3万      1  <0.1%
    67               借东风          3.7%    3.0  <0.1%     3935      1  <0.1%
    68             洋子的困惑  上映26天   0.3%    0.3  <0.1%    44.8万      7  <0.1%
    69             欢乐好声音          0.6%    1.0  <0.1%    2.15亿      1  <0.1%
    70            永安镇故事集  上映76天   1.2%    1.0  <0.1%   322.2万      1  <0.1%
    71               朱英国  上映10天   0.1%    0.2  <0.1%     2.9万      5  <0.1%
    72              流水落花  上映69天   0.2%    0.3  <0.1%    28.6万      3  <0.1%
    73            北京2022          0.1%    0.2  <0.1%  3053.6万      5  <0.1%
    74              None  上映22天   None   None   None     None   None   None
    
    [75 rows x 8 columns]

    猫眼电影数据可视化

    这个做的比较着急,欢迎大家fork项目,一起学习,一起改进

    1. import pandas as pd
    2. data=pd.read_csv("/home/mw/input/maoyan8911/猫眼电影.csv")
    3. data
    电影名称上映时间上座率场均人次票房占比综合票房排片场次排片占比
    0拯救嫌疑人上映22天1.4%2.038.5%5.15亿88298.028.3%
    1无价之宝上映13天1.4%1.721.7%1.25亿58746.018.8%
    2饥饿游戏:鸣鸟与蛇之歌上映6天1.1%1.514.4%4271.1万46224.014.8%
    3红猪上映6天1.5%1.85.2%1545.3万14796.04.7%
    4志愿军:雄兵出击上映56天2.5%2.63.9%8.23亿7333.02.3%
    5惊奇队长2上映13天0.3%0.42.6%1.08亿33801.010.8%
    6河边的错误上映33天1.2%1.22.4%2.97亿8997.02.8%
    7二手杰作上映27天0.8%0.81.4%1.14亿8871.02.8%
    8坚如磐石上映56天1.2%1.21.4%13.48亿5763.01.8%
    9前任4:英年早婚上映56天0.9%0.90.8%10.10亿4668.01.4%
    10觅渡上映87天75.0%38.80.7%2342.4万95.0<0.1%
    11追缉上映12天0.3%0.40.7%2058.5万11933.03.8%
    12莫斯科行动上映55天1.0%1.00.7%6.62亿3326.01.0%
    13吾爱敦煌上映6天0.7%0.70.6%624.2万4593.01.4%
    14家园·重返地球之战上映20天40.9%45.50.6%102.6万62.0<0.1%
    15开国将帅授衔1955点映38.5%389.00.3%14.6万2.0<0.1%
    16我本是高山点映39.5%73.90.3%1570.0万15.0<0.1%
    17八百矿工上井冈NaN57.4%73.30.3%450.8万24.0<0.1%
    18白塔之光上映27天12.5%11.70.2%683.3万128.0<0.1%
    19小马鞭上映38天8.8%9.10.2%745.1万120.0<0.1%
    20古庙迷杀上映6天0.3%0.40.2%99.7万3494.01.1%
    21迷你特工队之汉堡大作战上映12天0.3%0.30.1%1277.1万3387.01.0%
    22汪汪队立大功大电影2:超能大冒险上映55天0.7%0.70.1%1.35亿1623.00.5%
    23千里送鹤上映7天2.3%2.40.1%30.2万398.00.1%
    24奥本海默上映85天1.7%1.80.1%4.50亿245.0<0.1%
    25贝肯熊:火星任务上映56天0.4%0.4<0.1%8095.0万771.00.2%
    26单声NaN16.2%39.7<0.1%20.0万6.0<0.1%
    27过山榜点映97.7%172.0<0.1%80491.0<0.1%
    28喜马拉雅之灵上映6天0.7%0.7<0.1%51.8万310.0<0.1%
    29一个和四个上映27天0.5%0.5<0.1%484.3万359.00.1%
    ...........................
    45此生有约NaN41.1%35.0<0.1%61.8万1.0<0.1%
    46画魔人上映27天0.1%0.1<0.1%198.8万348.00.1%
    47普通男女上映20天0.4%0.4<0.1%115.6万72.0<0.1%
    48我爸没说的那件事上映20天0.1%0.1<0.1%415.8万215.0<0.1%
    49替身纸人上映41天0.3%0.4<0.1%458.9万71.0<0.1%
    50看不见的顶峰上映27天0.3%0.3<0.1%138.7万49.0<0.1%
    51最好的相遇上映34天0.1%0.1<0.1%1689.6万74.0<0.1%
    52故园飘梦上映31天0.3%0.4<0.1%39.1万42.0<0.1%
    53我是哪吒2之英雄归来上映55天0.2%0.2<0.1%1754.2万60.0<0.1%
    54思念爱上映12天0.3%0.3<0.1%3.2万29.0<0.1%
    55心愿房间上映23天0.4%0.5<0.1%9.0万15.0<0.1%
    56洛神NaN2.8%3.3<0.1%1.5万3.0<0.1%
    57小美人鱼之大海怪传说上映55天0.1%0.2<0.1%643.7万39.0<0.1%
    58侏罗纪公园3DNaN2.0%3.0<0.1%3.49亿1.0<0.1%
    59疯狂大营救上映55天0.7%0.4<0.1%89.9万11.0<0.1%
    60碧玉簪NaN4.0%4.0<0.1%2.3万1.0<0.1%
    61小黄人大眼萌:神偷奶爸前传NaN1.3%2.0<0.1%2.37亿1.0<0.1%
    62青春就这么过上映12天0.2%0.2<0.1%8.6万9.0<0.1%
    63党的女儿NaN1.3%1.0<0.1%6.2万2.0<0.1%
    64命中注定与你为敌NaN6.8%2.0<0.1%9.3万1.0<0.1%
    65午夜迷途NaN0.2%0.2<0.1%288.4万9.0<0.1%
    66失而复得上映26天0.0%<0.1<0.1%459.8万34.0<0.1%
    67借东风NaN3.7%3.0<0.1%39351.0<0.1%
    68洋子的困惑上映26天0.3%0.3<0.1%44.8万7.0<0.1%
    69欢乐好声音NaN0.6%1.0<0.1%2.15亿1.0<0.1%
    70永安镇故事集上映76天1.2%1.0<0.1%322.2万1.0<0.1%
    71朱英国上映10天0.1%0.2<0.1%2.9万5.0<0.1%
    72流水落花上映69天0.2%0.3<0.1%28.6万3.0<0.1%
    73北京2022NaN0.1%0.2<0.1%3053.6万5.0<0.1%
    74NaN上映22天NaNNaNNaNNaNNaNNaN
    1. <class 'pandas.core.frame.DataFrame'>
    2. RangeIndex: 75 entries, 0 to 74
    3. Data columns (total 8 columns):
    4. 电影名称 74 non-null object
    5. 上映时间 55 non-null object
    6. 上座率 74 non-null object
    7. 场均人次 74 non-null object
    8. 票房占比 74 non-null object
    9. 综合票房 74 non-null object
    10. 排片场次 74 non-null float64
    11. 排片占比 74 non-null object
    12. dtypes: float64(1), object(7)
    13. memory usage: 4.8+ KB

    数据缺省值处理

    1. # 去除空值
    2. data.dropna(inplace=True)
    3. data
    电影名称上映时间上座率场均人次票房占比综合票房排片场次排片占比
    0拯救嫌疑人上映22天1.4%2.038.5%5.15亿88298.028.3%
    1无价之宝上映13天1.4%1.721.7%1.25亿58746.018.8%
    2饥饿游戏:鸣鸟与蛇之歌上映6天1.1%1.514.4%4271.1万46224.014.8%
    3红猪上映6天1.5%1.85.2%1545.3万14796.04.7%
    4志愿军:雄兵出击上映56天2.5%2.63.9%8.23亿7333.02.3%
    5惊奇队长2上映13天0.3%0.42.6%1.08亿33801.010.8%
    6河边的错误上映33天1.2%1.22.4%2.97亿8997.02.8%
    7二手杰作上映27天0.8%0.81.4%1.14亿8871.02.8%
    8坚如磐石上映56天1.2%1.21.4%13.48亿5763.01.8%
    9前任4:英年早婚上映56天0.9%0.90.8%10.10亿4668.01.4%
    10觅渡上映87天75.0%38.80.7%2342.4万95.0<0.1%
    11追缉上映12天0.3%0.40.7%2058.5万11933.03.8%
    12莫斯科行动上映55天1.0%1.00.7%6.62亿3326.01.0%
    13吾爱敦煌上映6天0.7%0.70.6%624.2万4593.01.4%
    14家园·重返地球之战上映20天40.9%45.50.6%102.6万62.0<0.1%
    15开国将帅授衔1955点映38.5%389.00.3%14.6万2.0<0.1%
    16我本是高山点映39.5%73.90.3%1570.0万15.0<0.1%
    18白塔之光上映27天12.5%11.70.2%683.3万128.0<0.1%
    19小马鞭上映38天8.8%9.10.2%745.1万120.0<0.1%
    20古庙迷杀上映6天0.3%0.40.2%99.7万3494.01.1%
    21迷你特工队之汉堡大作战上映12天0.3%0.30.1%1277.1万3387.01.0%
    22汪汪队立大功大电影2:超能大冒险上映55天0.7%0.70.1%1.35亿1623.00.5%
    23千里送鹤上映7天2.3%2.40.1%30.2万398.00.1%
    24奥本海默上映85天1.7%1.80.1%4.50亿245.0<0.1%
    25贝肯熊:火星任务上映56天0.4%0.4<0.1%8095.0万771.00.2%
    27过山榜点映97.7%172.0<0.1%80491.0<0.1%
    28喜马拉雅之灵上映6天0.7%0.7<0.1%51.8万310.0<0.1%
    29一个和四个上映27天0.5%0.5<0.1%484.3万359.00.1%
    30好像也没那么热血沸腾上映56天0.4%0.4<0.1%1.75亿392.00.1%
    31不动声色上映6天0.6%0.6<0.1%8.9万208.0<0.1%
    32我的姐妹是网红之追梦花上映27天3.3%10.2<0.1%18.4万6.0<0.1%
    33珍·古道尔的传奇一生上映37天0.8%0.8<0.1%314.4万127.0<0.1%
    34美好人间上映10天75.1%41.3<0.1%3.1万3.0<0.1%
    35傍晚向日葵点映59.0%91.0<0.1%2.7万1.0<0.1%
    39困兽上映27天0.1%0.1<0.1%2102.4万578.00.1%
    40黄鹤楼之盐道迷局上映34天13.0%11.6<0.1%13.3万7.0<0.1%
    46画魔人上映27天0.1%0.1<0.1%198.8万348.00.1%
    47普通男女上映20天0.4%0.4<0.1%115.6万72.0<0.1%
    48我爸没说的那件事上映20天0.1%0.1<0.1%415.8万215.0<0.1%
    49替身纸人上映41天0.3%0.4<0.1%458.9万71.0<0.1%
    50看不见的顶峰上映27天0.3%0.3<0.1%138.7万49.0<0.1%
    51最好的相遇上映34天0.1%0.1<0.1%1689.6万74.0<0.1%
    52故园飘梦上映31天0.3%0.4<0.1%39.1万42.0<0.1%
    53我是哪吒2之英雄归来上映55天0.2%0.2<0.1%1754.2万60.0<0.1%
    54思念爱上映12天0.3%0.3<0.1%3.2万29.0<0.1%
    55心愿房间上映23天0.4%0.5<0.1%9.0万15.0<0.1%
    57小美人鱼之大海怪传说上映55天0.1%0.2<0.1%643.7万39.0<0.1%
    59疯狂大营救上映55天0.7%0.4<0.1%89.9万11.0<0.1%
    62青春就这么过上映12天0.2%0.2<0.1%8.6万9.0<0.1%
    66失而复得上映26天0.0%<0.1<0.1%459.8万34.0<0.1%
    68洋子的困惑上映26天0.3%0.3<0.1%44.8万7.0<0.1%
    70永安镇故事集上映76天1.2%1.0<0.1%322.2万1.0<0.1%
    71朱英国上映10天0.1%0.2<0.1%2.9万5.0<0.1%
    72流水落花上映69天0.2%0.3<0.1%28.6万3.0<0.1%

    猫眼电影上座率前10分析

    1. data_sorted = data.sort_values(by='上座率', ascending=False)
    2. data_top10=data_sorted.head(10)
    3. data_top10
    电影名称上映时间上座率场均人次票房占比综合票房排片场次排片占比
    27过山榜点映97.7%172.0<0.1%80491.0<0.1%
    19小马鞭上映38天8.8%9.10.2%745.1万120.0<0.1%
    34美好人间上映10天75.1%41.3<0.1%3.1万3.0<0.1%
    10觅渡上映87天75.0%38.80.7%2342.4万95.0<0.1%
    35傍晚向日葵点映59.0%91.0<0.1%2.7万1.0<0.1%
    14家园·重返地球之战上映20天40.9%45.50.6%102.6万62.0<0.1%
    16我本是高山点映39.5%73.90.3%1570.0万15.0<0.1%
    15开国将帅授衔1955点映38.5%389.00.3%14.6万2.0<0.1%
    32我的姐妹是网红之追梦花上映27天3.3%10.2<0.1%18.4万6.0<0.1%
    4志愿军:雄兵出击上映56天2.5%2.63.9%8.23亿7333.02.3%

    data_top10['电影名称'].tolist()
    
    ['过山榜',
     '小马鞭',
     '美好人间',
     '觅渡',
     '傍晚向日葵',
     '家园·重返地球之战',
     '我本是高山',
     '开国将帅授衔1955',
     '我的姐妹是网红之追梦花',
     '志愿军:雄兵出击']
    1. percentage=data_top10['上座率'].tolist()
    2. data_shangan=[percentage.replace("%", "") for percentage in percentage]
    3. data_shangan
    ['97.7', '8.8', '75.1', '75.0', '59.0', '40.9', '39.5', '38.5', '3.3', '2.5']
    

    1. from pyecharts.charts import Bar,Line,Map,Page,Pie
    2. from pyecharts import options as opts
    3. from pyecharts.globals import SymbolType
    4. from pyecharts.charts import Bar
    5. # from pyecharts.charts import opts
    6. #条形图
    7. #bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
    8. bar1 = Bar()
    9. bar1.add_xaxis(data_top10['电影名称'].tolist())
    10. bar1.add_yaxis('', data_shangan)
    11. bar1.set_global_opts(title_opts=opts.TitleOpts(title='猫眼电影上座率前10分析'),
    12. xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
    13. visualmap_opts=opts.VisualMapOpts(max_=28669)
    14. )
    15. bar1.render_notebook()

  • 相关阅读:
    软件开发无人天车智能控制系统智能库存管理单元解决方案
    陕西省助理评审申报,看这文章就够了
    Activity(页面)的生命周期
    代码随想录训练营
    实际项目中如何使用Git做分支管理
    用python找出400多万次KDJ金叉死叉,胜率有多高?附代码
    Whale News | 帷幄获公安部信息安全「等保三级」认证,信息安全体系建设行业领先
    面试系列 - 正则表达式详解
    Rust 模块系统
    Vue学习(二十)vuex
  • 原文地址:https://blog.csdn.net/weixin_45841831/article/details/136789572