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
  • 相关阅读:
    使用 asp.net mvc和 jQuery UI 控件包
    ServiceStack.Redis 使用教程
    HTC T8878刷机手册
    Entity Framework CodeFirst 文章汇集
    2011年Mono发展历程
    日志管理实用程序LogExpert
    使用 NuGet 管理项目库
    WCF 4.0路由服务Routing Service
    精进不休 .NET 4.0 (1) asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
    精进不休 .NET 4.0 (7) ADO.NET Entity Framework 4.0 新特性
  • 原文地址:https://www.cnblogs.com/chenlove/p/14801810.html
Copyright © 2011-2022 走看看