zoukankan      html  css  js  c++  java
  • 以『赘婿』为实战案例,手把手教会你用python爬取『爱奇艺』视频弹幕

    1前言

    最近爱奇艺独播热剧『赘婿』特别火,号主我也在一直追,借助手中的技术,想爬取弹幕分析该剧的具体情况以及网友的评论!

    由于为了让小白彻底学会使用python爬取爱奇艺弹幕的技术,因此本文详细介绍如何进行爬取,下文再进行分析数据

    2分析数据包

    1.查找数据包

    在浏览器里面按F12

    找到这类url

    https://cmts.iqiyi.com/bullet/54/00/7973227714515400_60_2_5f3b2e24.br
    

    2.分析弹幕链接

    其中的/54/00/7973227714515400,才是有用的!!!!

    爱奇艺的弹幕获取地址如下:

    https://cmts.iqiyi.com/bullet/参数1_300_参数2.z

    参数1是:/54/00/7973227714515400

    参数2是:数字1、2、3.....

    爱奇艺每5分钟会加载新的弹幕,每一集约是46分钟,46除以5向上取整就是10

    因此弹幕的链接如下:

    https://cmts.iqiyi.com/bullet/54/00/7973227714515400_300_1.z
    https://cmts.iqiyi.com/bullet/54/00/7973227714515400_300_2.z
    https://cmts.iqiyi.com/bullet/54/00/7973227714515400_300_3.z
    ......
    https://cmts.iqiyi.com/bullet/54/00/7973227714515400_300_10.z
    

    3.解码二进制数据包

    通过弹幕链接下载的弹幕包是以z为后缀格式的文件,需要进行解码!

    def zipdecode(bulletold):
        '对zip压缩的二进制内容解码成文本'
        decode = zlib.decompress(bytearray(bulletold), 15 + 32).decode('utf-8')
        return decode
    

    解码之后将数据保存成xml格式

    # 把编码好的文件分别写入个xml文件中(类似于txt文件),方便后边取数据
      with open('./lyc/zx' + str(x) + '.xml', 'a+', encoding='utf-8') as f:
          f.write(xml)
    

    3解析xml

    1.提取数据

    通过查看xml文件,我们需要提取的内容有1.用户id(uid)、2.评论内容(content)、3.评论点赞数(likeCount)。

    #读取xml文件中的弹幕数据数据
    from xml.dom.minidom import parse
    import xml.dom.minidom
    def xml_parse(file_name):
        DOMTree = xml.dom.minidom.parse(file_name)
        collection = DOMTree.documentElement
        # 在集合中获取所有entry数据
        entrys = collection.getElementsByTagName("entry")
        print(entrys)
        result = []
        for entry in entrys:
            uid = entry.getElementsByTagName('uid')[0]
            content = entry.getElementsByTagName('content')[0]
            likeCount = entry.getElementsByTagName('likeCount')[0]
            print(uid.childNodes[0].data)
            print(content.childNodes[0].data)
            print(likeCount.childNodes[0].data)
    

    4保存数据

    1.保存前工作

    import xlwt
    # 创建一个workbook 设置编码
    workbook = xlwt.Workbook(encoding = 'utf-8')
    # 创建一个worksheet
    worksheet = workbook.add_sheet('sheet1')
    
    
    # 写入excel
    # 参数对应 行, 列, 值
    worksheet.write(0,0, label='uid')
    worksheet.write(0,1, label='content')
    worksheet.write(0,2, label='likeCount')
    

    导入xlwt库(写入csv),并定义好标题(uid、content、likeCount)

    2.写入数据

    for entry in entrys:
        uid = entry.getElementsByTagName('uid')[0]
        content = entry.getElementsByTagName('content')[0]
        likeCount = entry.getElementsByTagName('likeCount')[0]
        print(uid.childNodes[0].data)
        print(content.childNodes[0].data)
        print(likeCount.childNodes[0].data)
        # 写入excel
        # 参数对应 行, 列, 值
        worksheet.write(count, 0, label=str(uid.childNodes[0].data))
        worksheet.write(count, 1, label=str(content.childNodes[0].data))
        worksheet.write(count, 2, label=str(likeCount.childNodes[0].data))
        count=count+1
    

    最后保存成弹幕数据集-李运辰.xls

    for x in range(1,11):
        l = xml_parse("./lyc/zx" + str(x) + ".xml")
    
    
    # 保存
    workbook.save('弹幕数据集-李运辰.xls')
    

    5总结

    1.通过实战案『赘婿』,手把手实现python爬取爱奇艺弹幕。

    2.python解析xml格式数据。

    3.将数据写入excel。

    如果大家对本文代码源码感兴趣,扫码关注『Python爬虫数据分析挖掘』后台回复:爱奇艺弹幕 ,获取完整代码。

    ------------- 推荐文章 -------------

    1.python爬取下载m3u8加密视频,原来这么简单!


    2.爬取1907条『课程学习』数据,分析哪类学习资源最受大学生青睐


    3.python爬取各类基金数据,以『动图可视化』方式展示基金的涨跌情况

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/chenlove/p/14496527.html
Copyright © 2011-2022 走看看