Python爬虫练习:爬取爱奇艺视频弹幕

python

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于菜鸟学Python数据分析,作者J哥

 

1.网页分析

本文以爬取《乐队的夏天第2季》第13期上视频弹幕为例,首先通过以下步骤找到存放弹幕的真实url。

 

分析弹幕真实url,我们发现,参数5981449914376200是视频tvid,参数62是tvid倒数4为的前两位,参数00是tvid的最后两位,.z前的参数1为视频总时长除以300秒向上取整。观察相邻两个弹幕文件包,可以看出爱奇艺每5分钟更新一次弹幕文件。

 

由于直接爬取出来的弹幕文件存在乱码,需要进行二进制编码,方可得到最终的弹幕数据。

 

2.爬虫实战

import zlib

import requests

# 1.爬取xml文件

def download_xml(url):

bulletold = requests.get(url).content # 二进制内容

return zipdecode(bulletold)

def zipdecode(bulletold):

"对zip压缩的二进制内容解码成文本"

decode = zlib.decompress(bytearray(bulletold), 15 + 32).decode("utf-8")

return decode

for x in range(1,12):

# x是从1到12,12怎么来的,这一集总共57分钟,爱奇艺每5分钟会加载新的弹幕,57除以5向上取整

url = "https://cmts.iqiyi.com/bullet/62/00/5981449914376200_300_" + str(x) + ".z"

xml = download_xml(url)

# 把编码好的文件分别写入17个xml文件中(类似于txt文件),方便后边取数据

with open("./aiqiyi/iqiyi" + str(x) + ".xml", "a+", encoding="utf-8") as f:

f.write(xml)

# 2.读取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:

content = entry.getElementsByTagName("content")[0]

print(content.childNodes[0].data)

i = content.childNodes[0].data

result.append(i)

return result

with open("aiyiqi_danmu.txt", mode="w", encoding="utf-8") as f:

for x in range(1,12):

l = xml_parse("./aiqiyi/iqiyi" + str(x) + ".xml")

for line in l:

f.write(line)

f.write("

"

3.数据预览

以上是 Python爬虫练习:爬取爱奇艺视频弹幕 的全部内容, 来源链接: utcz.com/z/530774.html

回到顶部