前言

利用Python实现抓取腾讯视频弹幕,废话不多说。

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

requests模块;

pandas模块

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

本文以爬取电影《革命者》为例,讲解如何爬取腾讯视频的弹幕和评论!

目标网址

https://v.qq.com/x/cover/mzc00200m72fcup.html

抓取弹幕

分析网址

依然进入浏览器的开发者工具进行抓包,当视频播放30秒它就会更新一个json数据包,里面包含我们需要的弹幕数据。

得到准确的URL:

https://mfm.video.qq.com/danmu?otype=json&callback=jQuery19109541041335587612_1628947050538&target_id=7220956568%26vid%3Dt0040z3o3la&session_key=0%2C32%2C1628947057&timestamp=15&_=1628947050569\
https://mfm.video.qq.com/danmu?otype=json&callback=jQuery19109541041335587612_1628947050538&target_id=7220956568%26vid%3Dt0040z3o3la&session_key=0%2C32%2C1628947057&timestamp=45&_=1628947050572

其中有差别的参数有timestamp_。_是时间戳。timestamp是页数,首条url为15,后面以公差为30递增,公差是以数据包更新时长为基准,而最大页数为视频时长7245秒。依然删除不必要参数,得到URL:

https://mfm.video.qq.com/danmu?otype=json&target_id=7220956568%26vid%3Dt0040z3o3la&session_key=0%2C18%2C1628418094&timestamp=15&_=1628418086509

代码实现

import pandas as pd\
import time\
import requests\
\
headers = {\'User-Agent': 'Googlebot'\
}\
# 初始为15,7245 为视频秒长,链接以三十秒递增\
df = pd.DataFrame()\
for i in range(15, 7245, 30):\url = "https://mfm.video.qq.com/danmu?otype=json&target_id=7220956568%26vid%3Dt0040z3o3la&session_key=0%2C18%2C1628418094&timestamp={}&_=1628418086509".format(i)\html = requests.get(url, headers=headers).json()\time.sleep(1)\for i in html['comments']:\content = i['content']\print(content)\text = pd.DataFrame({'弹幕': [content]})\df = pd.concat([df, text])\
df.to_csv('革命者_弹幕.csv', encoding='utf-8', index=False)

效果展示

抓取评论

网页分析

腾讯视频评论数据在网页底部,依然是动态加载的,需要按下列步骤进入开发者工具进行抓包:

点击查看更多评论后,得到的数据包含有我们需要的评论数据,得到的真实URL:

https://video.coral.qq.com/varticle/6655100451/comment/v2?callback=_varticle6655100451commentv2&orinum=10&oriorder=o&pageflag=1&cursor=0&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1628948867522\
https://video.coral.qq.com/varticle/6655100451/comment/v2?callback=_varticle6655100451commentv2&orinum=10&oriorder=o&pageflag=1&cursor=6786869637356389636&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1628948867523

URL中的参数callback以及_删除即可。重要的是参数cursor,第一条url参数cursor是等于0的,第二条url才出现,所以要查找cursor参数是怎么出现的。经过我的观察,cursor参数其实是上一条url的last参数:

代码实现

import requests\
import pandas as pd\
import time\
import random\
\
headers = {\'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'\
}\
df = pd.DataFrame()\
a = 1\
# 此处必须设定循环次数,否则会无限重复爬取\
# 281为参照数据包中的oritotal,数据包中一共10条数据,循环280次得到2800条数据,但不包括底下回复的评论\
# 数据包中的commentnum,是包括回复的评论数据的总数,而数据包都包含10条评论数据和底下的回复的评论数据,所以只需要把2800除以10取整数+1即可!\
while a < 281:\if a == 1:\url = 'https://video.coral.qq.com/varticle/6655100451/comment/v2?orinum=10&oriorder=o&pageflag=1&cursor=0&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132'\else:\url = f'https://video.coral.qq.com/varticle/6655100451/comment/v2?orinum=10&oriorder=o&pageflag=1&cursor={cursor}&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132'\res = requests.get(url, headers=headers).json()\cursor = res['data']['last']\for i in res['data']['oriCommList']:\ids = i['id']\times = i['time']\up = i['up']\content = i['content'].replace('\n', '')\text = pd.DataFrame({'ids': [ids], 'times': [times], 'up': [up], 'content': [content]})\df = pd.concat([df, text])\a += 1\time.sleep(random.uniform(2, 3))\df.to_csv('革命者_评论.csv', encoding='utf-8', index=False)

~完整代码私信获取

效果展示

Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论相关推荐

  1. python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕

    原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...

  2. Python爬虫实战(4):抓取淘宝MM照片

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  3. python爬虫学习笔记(一)—— 爬取腾讯视频影评

    前段时间我忽然想起来,以前本科的时候总有一些公众号,能够为我们提供成绩查询.课表查询等服务.我就一直好奇它是怎么做到的,经过一番学习,原来是运用了爬虫的原理,自动登陆教务系统爬取的成绩等内容.我觉得挺 ...

  4. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语 ...

  5. Python爬虫实战(二):抓取京东苹果手机评价

    目录 1. 网站分析 2. 示例代码 3. 注意事项 1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的 ...

  6. Python爬虫实战(1):抓取毒舌电影最新推送

    ​ update:6/11/2017 由于毒舌电影公众号被关闭账号,源码已失效,可参考并调整相关参数以适配网站上其他公众号文章的抓取,望周知. ~~~~~~~~~~~ 作为一个电影爱好者," ...

  7. Python爬虫实战:手机APP数据抓取分析!谁说不能爬取app数据的?

    大多数手机APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,使用python抓取超级课程表里用户发的话题.主要是练习python爬取app的一些方式和技巧. 1. ...

  8. python抓取腾讯视频弹幕_Python爬虫练习:腾讯视频弹幕数据采集

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜鸟学Python数据分析 1.网页分析 本文以爬取<脱 ...

  9. python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...

    文章目录 实战背景 说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧.而在他的多部小说中,翻拍次数最多的无疑就是<倚天屠龙记>了,而且次数已经高达十四次.最早的是1963香 ...

最新文章

  1. oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031
  2. java字符_Java String 类
  3. 多线程服务端和客户端通信
  4. C语言鹦鹉学舌1,鹦鹉学舌真是简单的学舌吗?为什么他们清晰的知道在哪用哪些词...
  5. boost::math模块计算 Bessel 和 Neumann 函数的零点的测试程序
  6. matlab plot errorbar,如何为MATLAB errorbar plot的点和垂直线设置不同的图例?
  7. HDOJ 1030 Delta-wave
  8. 初识Hadoop:大数据与Hadoop概述
  9. 启动成功浏览器显示不了_移动端利用chrome浏览器在PC端进行调试方法
  10. 刚刚开通blog写下几段文字,以表意义
  11. JdbcTemplate的主要用法
  12. posix,perl正则表达式区别
  13. 在Ruby中,如何跳过.each循环中的循环,类似于‘continue‘[duplicate]
  14. 【To Do! 重点 正则表达式】LeetCode 65. Valid Number
  15. C++ std::thread::hardware_concurrency() 获取CPU核心数
  16. poco源码简单分析
  17. 安全管家安卓_安卓手机自带的管家好,还是另外获取的管家好呢?这4点你要知道...
  18. 摄影入门-之一-什么是单反
  19. win10与ubuntu双系统安装
  20. ios上编译c语言的app_CppCode –适用于IOS的免费C / C ++ IDE和编译器

热门文章

  1. Android轮播换背景,Android 轮播图的实现方法总结
  2. MATLAB安装后的DOS框出现、脚本文件图标不显示、启动路径修改等问题解决
  3. OpenCV之截取条码制作视频算法
  4. Java与Kotlin的单例模式(霸气.jpg)
  5. 域名301重定向(针对apache的.htaccess)的几种方法
  6. 解析「三户模型」及建立账户模型
  7. 基于react-native实现情侣小游戏
  8. 极值、凹凸性、导数关系
  9. innodb OSC
  10. 远翔升压FP5207B,外置MOS升压大功率,软启动可调,工作频率可调