用 Python 爬取『赘婿』视频弹幕

Python中文社区

共 2921字,需浏览 6分钟

 ·

2021-03-12 10:03

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.zhttps://cmts.iqiyi.com/bullet/54/00/7973227714515400_300_2.zhttps://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.用户iduid)、2.评论内容content)、3.评论点赞数likeCount)。


#读取xml文件中的弹幕数据数据from xml.dom.minidom import parseimport xml.dom.minidomdef 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')# 创建一个worksheetworksheet = 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),并定义好标题(uidcontentlikeCount


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。



更多阅读



2020 年最佳流行 Python 库 Top 10


2020 Python中文社区热门文章 Top 10


5分钟快速掌握 Python 定时任务框架

特别推荐




点击下方阅读原文加入社区会员

浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报