zoukankan      html  css  js  c++  java
  • 手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示

    大家好,我是阿辰,今天手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示

    上次有粉丝说,那个是ios手机,安卓手机现在需要root权限才可以安装证书,那么今天就不以手机为例,以电脑PC端为例,这样大家都可以上手尝试

    今天教大家抓到数据包之后(需要令牌token才能获取数据),怎么编写python代码去构造数据包,这里以获取『某酷视频』为例,获取个人历史播放视频数据,并进行可视化数据展示

    1

    抓包工具

    Fiddler是PC端的抓包工具,如果没有这个工具的小伙伴可以在公众号后台:回复:fiddler,领取安装包。

    1.配置Fiddler

    端口设置为8888

    设置好之后点击一下Actions,让设置生效

    这里设置一下过滤域名,目的是只查看需要查看的域名数据包

    2.安装证书

    点击第一个可以在pc机上安装证书,Fiddler就可以抓取https数据包

    2

    pc端代理

    在设置-代理,里面设置相应的ip和端口(这里ip是本机ip127.0.0.1,和fiddler中对应的端口)

    下面就可以开始抓包

    3

    开始抓包

    在pc机上打开某酷视频软件,点击历史播放,查看记录

    可以看到历史播放的视频

    打开之后再Fiddler可以看到数据包

    对应数据包返回的json数据

    4

    编程构造请求

    抓到数据包之后,我们可以知道cookie、请求链接等信息

    如果没有cookie等信息可能会出现下面这种情况!

    请求链接可以直接粘贴

    获取cookie

    请求头(这里替换cookie),User-Agent是模拟客户端

    # 目标url
    origin_url = "https://playlog.youku.com/playlog/open/get.json?appName=iKu&appVersion=7.9.5&appkey=NWKOm6ipixT2f4Rs&ccode=03010101+&clientDrmAbility=7&deviceName=iKu&deviceid=54ab3a599713&hwClass=1&isOpenControl=1&os_ver=win_10.0_64&pg=1&pz=100&sign=a41d7247936a5bb7c076a6992d311921&stoken=UtDB1C4gT9Kg5h2crX7Cy2oZfJqIo2Zwj7rPYW9QZGyzOzN2Zzv14TQYGah0hxzGKESK1PElUp92d93yxZaCC6Ej8XBFCbv6arPpzNLTOQbS%252B0rBf8mB7TzAoLYekkTK4XmocdKt3OxACcMwchQZWQ%253D%253D&time=1618191263&utdid=YB5DqwAAACkDAIwqsB2Ux2P8&ver=8.0.8.12173"
    
    
    # 添加Cookie避免登陆操作,这里的"User-Agent"最好为客户端的标识
    yourcookie="自己的cookie"
    headers = {
        "Cookie": yourcookie,
        "User-Agent": "IKU/8.0.8.12173;IKUCID/IKU;OS/win_10.0_64;IKUCID/IKU"
    }
    

    构造请求

    content = requests.post(origin_url, headers=headers).json()
    results = content['results']
    print(content)
    print(results)
    print(len(results))
    with open("lyc0412.txt",'w+',encoding="utf-8") as f:
        for i in results:
                print("类型="+i['category'])
                print("播放设备=" + i['devicename'])
                print("标题=" + i['title'])
                print("时间=" + i['pubdate'])
                print("-------------------------")
                f.write(str(i['category'])+"="+str(i['devicename'])+"="+str(i['title'])+"="+str(i['pubdate'])+"
    ")
    

    可以看到已经成功发送成功,并且提取出对应数据,这次就不把数据存到excel,直接存在文本文件中(以“=”分割开)。

    5

    可视化展示

    1.类型展示

    统计观看历史记录中类型个数

    先看一下数据

    for i in data:
        temdata.append(i.split("=")[0])
    name = list(set(temdata))
    value = [temdata.count(k) for k in name]
    c = (
        Pie()
            .add(
            "",
            [list(z) for z in zip(name, value)],
            # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
            # 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
            center=["35%", "50%"],
        )
            .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])  # 设置颜色
            .set_global_opts(
            title_opts=opts.TitleOpts(title="类型展示"),
            legend_opts=opts.LegendOpts(type_="scroll", pos_left="70%", orient="vertical"),  # 调整图例位置
        )
            .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
            .render("类型展示.html")
    )
    

    2.播放设备展示

    统计播放设备类型个数(由于代码和上面代码差不多,这里就只展示不同部分代码)

    temdata = []
    for i in data:
        temdata.append(i.split("=")[1])
    name = list(set(temdata))
    value = [temdata.count(k) for k in name]
    

    3.影视年份统计展示

    统计播放历史记录中,2020年、2019、2018等年份的影视个数

    这里只需要去除年份即可

     temdata = []
    for i in data:
        temdata.append((i.split("=")[-1])[0:4])
    name = list(set(temdata))
    

    然后统计每一个年份的个数

    temdict={}
    for i in name:
        temdict[i]=temdata.count(i)
    value_sorted_result = sorted(temdict.items(), key=lambda item: item[1], reverse=True)  # 按value进行降序
    names = [i[0] for i in value_sorted_result]
    value = [i[1] for i in value_sorted_result]
    

    6

    小结

    本文讲解了如何爬取PC端数据(以某酷视频为例,爬取个人播放历史数据,并进行可视化展示),过程很详细,满满干货,希望可以起到抛砖引玉效果,让大家学到更多技术!

    如果大家觉得还可以什么角度去分析展示数据的,欢迎在下方留言(我会认真看)

    最后说一声:原创不易,求给个赞、在看、评论

    推荐阅读

    手把手教你实现『B站直播』弹幕实时分析

    以『B站直播』为例,实现数据『实时』可视化分析

    Flask结合ECharts实现在线可视化效果,超级详细!

    python实时采集直播弹幕数据进行可视化展示

    公众号后台添加小编微信,可领取代码

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    VB程序逆向反汇编常见的函数(修改版)
    [反汇编练习] 160个CrackMe之009
    [反汇编练习] 160个CrackMe之008
    [反汇编练习] 160个CrackMe之007
    [反汇编练习] 160个CrackMe之006
    Delphi反汇编内部字符串处理函数/过程不完全列表
    [反汇编练习] 160个CrackMe之005
    [反汇编练习] 160个CrackMe之004
    新建Django配置
    mysql 常用命令大全
  • 原文地址:https://www.cnblogs.com/chenlove/p/14801810.html
Copyright © 2011-2022 走看看