Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论
前言
利用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×tamp=15&_=1628947050569\
https://mfm.video.qq.com/danmu?otype=json&callback=jQuery19109541041335587612_1628947050538&target_id=7220956568%26vid%3Dt0040z3o3la&session_key=0%2C32%2C1628947057×tamp=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×tamp=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×tamp={}&_=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实现抓取腾讯视频弹幕评论相关推荐
- python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕
原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...
- Python爬虫实战(4):抓取淘宝MM照片
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- python爬虫学习笔记(一)—— 爬取腾讯视频影评
前段时间我忽然想起来,以前本科的时候总有一些公众号,能够为我们提供成绩查询.课表查询等服务.我就一直好奇它是怎么做到的,经过一番学习,原来是运用了爬虫的原理,自动登陆教务系统爬取的成绩等内容.我觉得挺 ...
- Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语 ...
- Python爬虫实战(二):抓取京东苹果手机评价
目录 1. 网站分析 2. 示例代码 3. 注意事项 1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的 ...
- Python爬虫实战(1):抓取毒舌电影最新推送
update:6/11/2017 由于毒舌电影公众号被关闭账号,源码已失效,可参考并调整相关参数以适配网站上其他公众号文章的抓取,望周知. ~~~~~~~~~~~ 作为一个电影爱好者," ...
- Python爬虫实战:手机APP数据抓取分析!谁说不能爬取app数据的?
大多数手机APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,使用python抓取超级课程表里用户发的话题.主要是练习python爬取app的一些方式和技巧. 1. ...
- python抓取腾讯视频弹幕_Python爬虫练习:腾讯视频弹幕数据采集
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜鸟学Python数据分析 1.网页分析 本文以爬取<脱 ...
- python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...
文章目录 实战背景 说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧.而在他的多部小说中,翻拍次数最多的无疑就是<倚天屠龙记>了,而且次数已经高达十四次.最早的是1963香 ...
最新文章
- oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031
- java字符_Java String 类
- 多线程服务端和客户端通信
- C语言鹦鹉学舌1,鹦鹉学舌真是简单的学舌吗?为什么他们清晰的知道在哪用哪些词...
- boost::math模块计算 Bessel 和 Neumann 函数的零点的测试程序
- matlab plot errorbar,如何为MATLAB errorbar plot的点和垂直线设置不同的图例?
- HDOJ 1030 Delta-wave
- 初识Hadoop:大数据与Hadoop概述
- 启动成功浏览器显示不了_移动端利用chrome浏览器在PC端进行调试方法
- 刚刚开通blog写下几段文字,以表意义
- JdbcTemplate的主要用法
- posix,perl正则表达式区别
- 在Ruby中,如何跳过.each循环中的循环,类似于‘continue‘[duplicate]
- 【To Do! 重点 正则表达式】LeetCode 65. Valid Number
- C++ std::thread::hardware_concurrency() 获取CPU核心数
- poco源码简单分析
- 安全管家安卓_安卓手机自带的管家好,还是另外获取的管家好呢?这4点你要知道...
- 摄影入门-之一-什么是单反
- win10与ubuntu双系统安装
- ios上编译c语言的app_CppCode –适用于IOS的免费C / C ++ IDE和编译器