社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

以『赘婿』为实战案例,手把手教会你用python爬取『爱奇艺』视频弹幕

菜鸟学Python • 4 年前 • 366 次点击  




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。



如果大家对本文代码源码感兴趣,公众号后台回复:爱奇艺 ,获取完整代码。



推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径


干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |


趣味:弹球游戏  | 九宫格   | 漂亮的花 | 两百行Python《天天酷跑》游戏!


AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影


年度爆款文案



点这里,菜鸟学PythonB站视频!!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/108488
 
366 次点击