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

前言

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

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

requests模块;

pandas模块

以及一些Python自带的模块。

环境搭建

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

思路分析

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

目标网址

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

抓取弹幕

分析网址

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

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

得到准确的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×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&timestamp=15&_=1628418086509

代码实现

import pandas as pd\
import time\
import requests\
\
headers = {\
    'User-Agent': 'Googlebot'\
}\

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)

效果展示

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

抓取评论

网页分析

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

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

点击查看更多评论后,得到的数据包含有我们需要的评论数据,得到的真实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参数:

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

代码实现

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\

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实现抓取腾讯视频弹幕评论

Original: https://blog.csdn.net/weixin_43649691/article/details/121138546
Author: 小雁子学Python
Title: Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752699/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Scrapy框架不会?来让我带你了解了解

    🌵爬虫之Scrapy系列文章🌱欢迎点赞评论学习交流~🌴各位看官多多关注哦😘~ 目录 🍉Scrapy框架的介绍 🌴Scrapy框架的模块 🌴Scrapy模块的运作 🍉创建项目 🌴前期…

    Python 2023年10月4日
    023
  • 如何实现根据照片获取地理位置及如何防御照片泄漏地理位置

    【阅读全文】 首先,说明一下python确实可以根据照片获取地理位置,但是也是有一定的限制条件的。 获取照片地理位置的实现思路是这样的:通过提取照片中的经纬度信息。然后通过经纬度信…

    Python 2023年11月3日
    060
  • 部署本地Django项目到服务器

    前言 最近在做Django项目 一开始是vue前端加上django后端的前后端整合 后来leader说改需求了只需要后端接口 并且需要部署到虚拟机上(CentOS7)笔者没什么li…

    Python 2023年8月4日
    042
  • 【邂逅Django】——(三)视图

    🛠️ Part 3:【邂逅Django】—— (三)视图 🛠️ Part 4:【邂逅Django】—— (四)表单和通用视图 🛠️ Part 5:【邂逅Django】—— (五)完…

    Python 2023年11月2日
    037
  • 【Linux】gcc/g++编译器、make/Makefile自动化构建工具

    作者:小卢专栏:《Linux》喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》目录1.gcc/c++的概念:2.程序编译过程详解:2.1程序编译过程:2.2gcc指…

    Python 2023年11月5日
    028
  • Python 圆拟合

    上一篇文章介绍了关于OPENCV椭圆拟合的方法 (Python opencv 椭圆拟合)。在实际工程中,有些场景是需要精确的正圆测量和拟合,使用通用椭圆拟合方式容易引入较大的误差。…

    Python 2023年8月24日
    0125
  • Django建立博客搜索功能(haystack+whoosh+jieba)

    0-效果预览 ; 1-相关说明: haystack 全文检索框架,可配置各种搜索引擎,在Django内相当于appwhoosh 搜索引擎 2-whoosh下载与优化 中文分词jie…

    Python 2023年8月4日
    045
  • 数据挖掘模型学习

    import pandas as pdfrom keras.models import Sequentialfrom keras.layers.core import Dense,…

    Python 2023年8月25日
    050
  • 软件设计模式白话文系列(十一)享元模式

    以共享的方法高效地支持大量细粒度对象的复用。在 Java 中,通过提前初始化对象或者首次使用后记录对象,后续使用就可以复用对象来实现享元模式。类似缓存技术。 享元对象:可复用对象。…

    Python 2023年10月15日
    030
  • Python爬虫:urllib3与urllib到底有何区别?内行人告诉你答案

    目录 网络库urllib3 * 网络请求 – GET请求 POST请求 HTTP响应头 上传文件 超时处理 ; 网络库urllib3 urllib3是比urllib库更…

    Python 2023年8月12日
    044
  • pandas上

    pandas上 1 什么是Pandas 2 Series * (1)Series对象的创建与类型 (2)修改类型 (2)取值 (3)索引 (4)索引和值 (5)unique()的功…

    Python 2023年8月18日
    076
  • Selenium+Pytest自动化测试框架实战

    本章你需要 一定的python基础——至少明白类与对象,封装继承 一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 测试框架简介…

    Python 2023年9月10日
    048
  • pandas读写csv和xlsx

    import pandas as pd import numpy as np 1、读写csv path = ‘…/111.csv’ 读 data = pd.read_csv(p…

    Python 2023年8月8日
    061
  • Python框架-Flask

    Flask作为主流的框架之一,是每个程序员必不可少掌握的, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架;本身相当于一个内核, 其他几乎所有的功能都要用…

    Python 2023年8月9日
    042
  • 股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香

    更多精彩内容, 欢迎关注公众号:数量技术宅,也可添加技术宅 个人微信号:sljsz01,与我交流。 免费、开源的股票爬虫Python库:Easyquotation 我们在此前的文章…

    Python 2023年5月25日
    084
  • 操作系统启动流程和BIOS介绍

    1.BIOS介绍 我们刚刚买回来的电脑裸机是可以直接启动的,这是由于生产厂商在电脑出厂的时候就在电脑里编写了一个只可读的系统功能BIOS,该系统被写入了ROM(只读内存中) BIO…

    Python 2023年5月23日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球