打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
网络爬虫实战(四):爬取腾讯视频电视剧弹幕

爬取腾讯视频电视剧弹幕

  • 文章目录
    • 实战背景
    • 网站分析
    • 编写代码
    • 爬取结果

转载请注明作者和出处:http://blog.csdn.net/lyc44813418/article/details/88930046
Github代码获取:https://github.com/librauee/reptile
Python版本: Python3.7
运行平台: Windows
IDE:Spyder

文章目录

实战背景

说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧。而在他的多部小说中,翻拍次数最多的无疑就是《倚天屠龙记》了,而且次数已经高达十四次。最早的是1963香港导演将这个小说以电影形式拍成了上下两集。虽然是第一次,但不得不说导演也是非常的有新意,和金庸多次沟通后,也是将很多情节做了一些改变,比如将武当七侠排行最小的改成了师妹,而金毛谢逊也只是瞎一只眼等等。


随后更是很多导演对这部小说进去了翻拍,除了翻拍成几部电影,同样的也进行了电视剧形式的翻拍。香港,内陆也多次反拍,而说到内陆大家最熟悉的莫过于苏有朋这版了,贾静雯版的赵敏令我印象深刻。新版《倚天屠龙记》最近热播中,老版的老版的周芷若扮演者周海媚这回升级成灭绝师太,新版的周芷若扮演者祝绪丹美艳银屏,对于新版本观众老爷们到底有什么想说的呢?随即想到可以再视频中将弹幕爬取,以便于进行后续的分析。

网站分析

打开腾讯视频的网页,点开新版倚天屠龙记,播放视频,弹幕随之出现再屏幕之上。


首先我们需要找到相应的弹幕出自于哪里,打开网页开发者工具,Ctrl+F输入:等了好久,找到弹幕所在的页面

观察发现这是一个json,其弹幕内容包含在该json中的comments之中

找到页面之后观察该页面的请求头,请求方式为get,target_id为该电视剧的网页ID,得到该电视剧的链接地址主要由target_id和timestamp时间戳构成,形如 http://mfm.video.qq.com/danmu?timestamp=0&target_id=xxxxx
且该json表明时间戳每30会更新一次弹幕信息,单位为秒,对网站进行分析之后我们便来动手编写代码吧!

编写代码

timestamp每增加30就会更改整个弹幕页面,利用format对链接进行改写,在循环中每次增加30,并更改target_id即电视剧的每一集来获取每一集的弹幕信息,下面便是编写的获取弹幕的函数。这里一共取了前五集进行爬取。


def get_danmu(self):
        """
        爬取一集新版倚天屠龙记电视剧的弹幕
        """
        count=0
        target_list=[str(3748894695),str(3748894707),str(3748894703),str(3748894705),str(3748894704)]
        for target in target_list:
            url='http://mfm.video.qq.com/danmu?timestamp={}&target_id='+target
            page=1    
           
            for i in range(100):
                req_url=url.format(30*page)
                r=requests.get(req_url, headers=self.headers)
                for danmu in r.json(strict=False)['comments']:
                    self.parse_comment(danmu=danmu)               
                page+=1
            count+=1
            print("已将第{}集弹幕信息存入数据库".format(count))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

获取的json构造成字典,主要包括弹幕内容,发弹幕用户的昵称,点赞数等等,然后逐条插入MongoDB数据库

def parse_comment(self, danmu):
        """
        解析函数,用来解析爬回来的json评论数据,并把数据保存进mongodb数据库
        """
        dmdic = {'content': danmu['content'], 'id': danmu['commentid'],
                 'upcount': danmu['upcount'],'timepoint': danmu['timepoint'],
                 'username': danmu['opername']
                   }  # 构造弹幕字典
        self.db['TecentVedioDanmu'].insert_one(dmdic)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

爬取结果

查看已存入数据库的数据信息


将数据库信息读取,发现共计54301条数据


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 54301 entries, 0 to 54300
Data columns (total 5 columns):
content      54301 non-null object
id           54301 non-null object
timepoint    54301 non-null int64
upcount      54301 non-null int64
username     54301 non-null object
dtypes: int64(2), object(3)
memory usage: 2.1+ MB
              content                   id  timepoint  upcount username
0        曾舜晞你的小可爱突然出现  6506515190020290832         30      183    Leyla
1  竟然还是这个 主题曲     太好听  6506499481202570807         31      348       慢慢
2        哇塞终于出来了等了好久了  6506515196232055107         31      168    Leyla
3          还没到点呢,怎么回事  6506520554738563861         31      135      李逍遥
4         有周海媚?我好像看到了  6506499433775511859         32      182       莫非

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
宝藏B站UP主,视频弹幕尽收囊中!
Python爬取15万条《我是余欢水》弹幕,还原一个丧到极致的中年人生
让弹幕飞一会儿——腾讯视频弹幕(39W )爬取实战
微信小程序之----video视频播放
你相信逛B站也能学编程吗?
腾讯视频缩小弹幕显示区域方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服