python-批量下载某短视频平台音视频标题、评论、点赞数

news2024/11/18 3:49:16

python-批量下载某短视频平台音视频标题、评论数、点赞数

  • 前言
  • 一、获取单个视频信息
    • 1、获取视频 url
    • 2、发送请求
    • 3、数据解析
  • 二、批量获取数据
    • 1、批量导入地址
    • 2、批量导出excel文件
    • 3、批量存入mysql数据库
  • 三、完整代码


前言

1、Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

2、有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

3、dy核心的cookies是sessionID值, 可嵌套到接口的headers里的Cookie里进行请求。

一、获取单个视频信息

1、获取视频 url

2、发送请求

接下来就是简单的发送请求,唯一需要注意的一点就是 headers 中除了要配置 User-Agent外,还要配置 cookie 信息,否则拿不到想要的数据,cookie 位置在下图
在这里插入图片描述

配置好 headers 之后,发送 get 请求,拿到页面源码数据

data = requests.get(url=url, headers=headers)
data.encoding = 'utf-8'
data = data.text

3、数据解析

在页面源码数据中有很长一串数据是经过 url 编码的,而我们需要的数据都在这串数据中,因此我们需要拿到这串数据。通过正则表达式定位并取出这串数据,然后调用 requests 模块下的工具包 utils 里的 unquote 方法解码这串数据(得到的是 string 类型的数据),代码如下:

data_en = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script></head><body >',data)[0]
data_all = requests.utils.unquote(data_en)

后面就是经典的资源定位了,先在数据中找到该视频的评论数,点赞数
在这里插入图片描述
编写正则表达式将其取出

# 点赞数
diggCount = re.findall('"diggCount":(.*?),"shareCount"', data_all)[0]
# 评价数
commentCount = re.findall('"commentCount":(.*?),', data_all)[0]

标题与点赞数评论数类似,只是位置不同

# 标题
title = re.findall('"desc":"(.*?)","authorUserId"', data_all)[0].replace(' ', '')

二、批量获取数据

1、批量导入地址

excel文件保存需获取的视频地址
在这里插入图片描述

导入excel表格,读取数据

# 导入excel表格
df = pandas.read_excel('文件名.xlsx', header=0)  # 导入URL信息
urls = df.iloc[:, 1]

2、批量导出excel文件

需导出数据存入字典中,根据字典创建DataFrame文件后进行导出

# 导出excel表格
dataframe = pd.DataFrame({'地址': urls, '标题': titleList, '发布时间': createTimeList, '点赞数': diggCountList, '评价数': commentCountList})
with pd.ExcelWriter(str(date.today()) + 'dy.xlsx') as writer:
    dataframe.to_excel(writer, sheet_name='Sheet1', index=False)

3、批量存入mysql数据库

mysql数据库新建表

CREATE TABLE dy_info (
	`dy_info_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '信息ID',
	`url` VARCHAR(255) NOT NULL DEFAULT "" COMMENT '地址',
	`title` VARCHAR(100) NOT NULL DEFAULT "" COMMENT '标题',
	`create_time` VARCHAR(20) NOT NULL DEFAULT "" COMMENT '发布时间',
	`digg_count` INT NOT NULL DEFAULT 0 COMMENT '点赞数',
	`comment_count` INT NOT NULL DEFAULT 0 COMMENT '评价数',
	`create_tm` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
  `update_tm` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
  PRIMARY KEY (`dy_info_id`)
)ENGINE=INNODB COMMENT='信息表';

通过python向mysql插入大量数据时,可以有两种方法:
1、for + cursor.execute(sql),最后集中提交(commit())
2、cursor.executemany(sql,list)
两种方法效率上和功能上有一定差异。26万条数据,使用第一种方法需要约1.5小时,使用第二种方法只需要10几秒。

在这里我们使用第二种方法:

# 批量写入数据库
# 打开数据库连接
conn = pymysql.connect(host='127.0.0.1',
                       port=3306,
                       user='root',
                       passwd='', #填入你的密码
                       db='dy',
                       charset='utf8'
                       )

sql = 'INSERT INTO `dy_info`(url, title, create_time, digg_count, comment_count) VALUES(%s, %s, %s, %s, %s)'

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
cursor.executemany(sql, sqlInfo)
conn.commit()  # 提交
cursor.close()
conn.close()

三、完整代码

完整代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】软硬链接

在linux中在磁盘中定位文件并不是根据文件名而是根据文件的inode&#xff0c;一个文件对应一个inode但是一个inode可以对应多个文件。硬链接硬链接是通过索引节点进行的链接。在Linux中&#xff0c;多个文件指向同一个索引节点是允许的&#xff0c;像这样的链接就是硬链接。硬链…

【论文速递】EMNLP 2020 - 将事件抽取作为机器阅读理解任务

【论文速递】EMNLP 2020 - 将事件抽取作为机器阅读理解任务 【论文原文】&#xff1a;Event Extraction as Machine Reading Comprehension 【作者信息】&#xff1a;Jian Liu and Yubo Chen and Kang Liu and Wei Bi and Xiaojiang Liu 论文&#xff1a;https://aclantholo…

计算机视觉知识体系

文章目录一、计算机视觉1.1 系统工程方案层1.2 领域任务模块层1.3 基础算法层1.4 深入领域体会一、计算机视觉 三个层次&#xff1a;系统工程方案层、领域任务模块层、基础算法层。 三方面知识点&#xff1a;图像处理、机器学习、基础数学与模型。 视频的三个场景&#xff1…

k8s node之间是如何通信的?

承接上文同一个node中pod之间如何通信&#xff1f;单一Pod上的容器是怎么共享网络命名空间的&#xff1f;每个node上的pod ip和cni0网桥ip和flannel ip都是在同一个网段10.1.71.x上。cni0网桥会把报文发送flannel这个网络设备上&#xff0c;flannel其实是node上的一个后台进程&…

【设计模式】2.抽象工厂模式

抽象工厂模式 前面介绍的工厂方法模式中考虑的是一类产品的生产&#xff0c;如畜牧场只养动物、电视机厂只生产电视机、传智播客只培养计算机软件专业的学生等。 这些工厂只生产同种类产品&#xff0c;同种类产品称为同等级产品&#xff0c;也就是说&#xff1a;工厂方法模式…

【python】条件语句,简单理解

嗨害大家好鸭&#xff01;我是小熊猫~ Python 条件语句 Python条件语句是通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 更多python资料获取:点击此处跳转文末名片获取 Python程序语言…

【笔记】两台1200PLC进行S7 通信(1)

使用两台1200系列PLC进行S7通信&#xff08;入门&#xff09; 文章目录 目录 文章目录 前言 一、通信 1.概念 2.PLC通信 1.串口 2.网口 …

2023年5月软考软件设计师备考经验

一、考试目标&#xff1a; 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求&#xff0c;按照系统总体设计规格说明书进行软件设计&#xff0c;编写程序设计规格说明书等相应的文档&#xff0c;组织和指导程序员编写、调试程序&#xff0c;并对软件进行优化和集成…

cityengine自定义纹理库资源

背景 cityengine虽然可以将shp生成带纹理的三维模型,但是纹理不一定满足我们的要求,这时候我们就想用我们自己制作的纹理 粗略了解规则文件 了解Building_From_Footprint.cga这个规则文件,具体文件位置默认在 “C:\Users[电脑用户名:如Administrator]\Documents\CityEng…

小米无线AR眼镜探索版细节汇总

在MWC 2023期间&#xff0c;小米正式发布了一款无线AR眼镜&#xff0c;虽然还没看过实机&#xff0c;但XDA提前上手体验&#xff0c;我们从中进行总结。首先我要说的是&#xff0c;小米这款眼镜和高通无线AR眼镜参考设计高度重叠&#xff0c;产品卖点几乎一致&#xff0c;只是增…

OSWatcher.sh脚本说明

OSWatcher.sh脚本位于oswbb目录下&#xff08;Oracle 19c数据库中脚本的路径是&#xff1a; /u01/app/oracle/product/19.0.0/dbhome_1/suptools/tfa/release/tfa_home/ext/oswbb/&#xff09;&#xff0c;由脚本startOSWbb.sh和stopOSWbb.sh来调用启动和停止它。 1. startOSW…

[Android Studio] Android Studio生成数字证书,为应用签名

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f4cb;笔记目…

python+ADCIRC潮汐、风驱动循环、风暴潮等海洋水动力模拟

目录 专题一 ADCIRC背景与原理 专题二 ADCIRC的编译安装 专题三 ADCIRC模式前处理 专题四 ADCIRC案例分析 专题五 Python基础与科学计算 专题六 ADCIRC模式后处理 学习包含ADCIRC模式的基础到高阶的内容&#xff0c;针对风暴潮的模拟和预报&#xff0c;既有基础理论讲解&…

Linux环境内存管理——链表

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Windows程序员如何学习Linux环境内存管理。由于很多程序在Windows环境下开发好后&#xff0c;还要部署到Linux服务器上去&#xff0c;所以作为Windows程序员有必要学习Linux环境的内存…

CD销售管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;二十一世纪是一个集数字化&#xff0c;网络化&#xff0c;信息化的&#xff0c;以网络为核心的社会。中国的网民充分领略到“畅游天地间&#xff0c;网络无极限” 所带来的畅快。随着Internet的飞速发展&#xff0c;使得网络的应用…

【深度学习】RNN

1. 什么是RNN 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类以序列&#xff08;sequence&#xff09;数据为输入&#xff0c;在序列的演进方向进行递归&#xff08;recursion&#xff09;且所有节点&#xff08;循环单元&#xff09;按链式连接的递…

Spring彻头彻尾的讲解,按照Spring框架启动流程,逐步剖析问题,不再是大杂烩!

文章目录1. 定义Spring Bean篇1.1 定义Spring Bean的几种方式1.1.1 XML文件定义Spring Bean1.1.2 JavaConfig定义Spring Bean1.1.3 Component注解定义SpringBean1.2 装配Spring Bean的四种常用方式1.2.1 手动装配 XML文件1.2.2 自动装配 XML文件1.2.3 手动装配 JavaConfig文…

冲冲冲,力扣javascript刷题——数组总结

力扣javascript刷题——数组总结冲冲冲&#xff0c;力扣刷题——数组总结1.二分查找力扣704题:二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.x 的平方根367. 有效的完全平方数2.双指针法27. 移除元素26. 删除有序数组中的重复项283.移动零844. 比较…

Spring 大白话系列:工厂

Spring 大白话系列&#xff1a;工厂 “工厂模式&#xff0c;大家都很熟悉了。说到底&#xff0c;就是解除创建对象和使用对象之间的耦合。这东西没啥啊。” 教室里&#xff0c;老师傅听到小明在嘀嘀咕咕的。老师走过去问&#xff1a; “有什么问题呢小明同学&#xff1f;” 小…

三、Buffer has no PTS和runtime check failed

1 问题来源 1.1 Buffer has no PTS 我使用mp4mux或者qtmux的时候&#xff0c;偶尔会出现Buffer has no PTS问题。 PTS&#xff08;时间戳&#xff09;是用于标识音视频数据在时间轴上的位置的重要参数&#xff0c;缺少时间戳信息会导致无法确定数据在时间轴上的位置&#xf…