+关注
已关注

分类  

数据分析(43)

爬虫(100)

日期归档  

2020-05(5)

2020-06(2)

2020-07(12)

2020-08(2)

2020-09(46)

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

发布于2020-10-26 14:31     阅读(41)     评论(0)     点赞(0)     收藏(0)


0

1

2

3

4

5

6

7

前言

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

以下文章来源于菜鸟学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("\n"

3.数据预览

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 博客

作者:松鼠爱吃饼干

链接: https://www.pythonheidong.com/blog/article/608682/5f436dd55c326f351624/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)