本文实例为大家分享了python批量下载抖音视频的具体代码,供大家参考,具体内容如下

知识储备:博主是在Pycharm下进行的

文件夹:dou_ying

1:在文件夹doy_ying下新建第一个文件:dou_ying_video_download.py

代码:

# coding=utf-8

"""

@author: jiajiknag

程序功能:批量下载抖音视频

"""

import requests

import bs4

import os

import json

import re

import sys

import time

# 如果一个对象没有实现上下文,我们就不能把它用于with语句。这个时候,可以用closing()来把该对象变为上下文对象。

# closing-将任意对象变为上下文对象,并支持with语句。

from contextlib import closing

# Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库

# urllib3.disable_warnings()禁用urllib3警告的方法

requests.packages.urllib3.disable_warnings()

# 创建类Sipder()

class Spider():

def __init__(self):

# UA对照表:https://blog.csdn.net/time888/article/details/72822729

self.headers = {

# 用户代理:用于浏览器识别的,可以看出自己系统版本,浏览器,浏览器内核等

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'

}

# 输出信息-视频信息

print('[INFO]:Douyin(抖音) App Video downloader...')

print('[Version]: V1.0')

print('[Author]: Jiajikang')

# 创建函数run():外部调用运行

def run(self):

# 输入ID地址(爬去某人抖音视频的抖音号)

user_id = input('Enter the ID:')

try:

# 因为抖音号是数字所以使用int()验证是否是数字

int(user_id)

# 输入错误时输出except下的语句

except:

print('[Error]:ID error...')

return

video_names, video_urls, nickname = self._parse_userID(user_id)

# os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表

if nickname not in os.listdir():

# os.mkdir() 方法用于以数字权限模式创建目录

os.mkdir(nickname)

print('[INFO]:Number of Videos <%s>' % len(video_urls))

for num in range(len(video_names)):

# %d是一个占位符,标识一个字符串型的数据, %s也是一个占位符,标识一个字符串型的数据

print('[INFO]:Parsing ' % (num+1, video_urls[num]))

temp = video_names[num].replace('\\', '')

video_name = temp.replace('/', '')

# 调用函数_downloader()

self._downloader(video_urls[num], os.path.join(nickname, video_name))

print('\n')

print('[INFO]:All Done...')

# 创建函数_downloader()并含有参数:路径和视频的url-视频下载

def _downloader(self, video_url, path):

# 定义size并初始化为0

size = 0

# 定义一个变量download_url:利用函数_get_download_url()来获取视频url

download_url = self._get_download_url(video_url)

with closing(requests.get(download_url, headers=self.headers, stream=True, verify=False)) as response:

chunk_size = 1024

content_size = int(response.headers['content-length'])

if response.status_code == 200:

sys.stdout.write('[File Size]: %0.2f MB\n' % (content_size/chunk_size/1024))

# 使用写入的方式打开,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

with open(path, 'wb') as f:

# 遍历获取数据

for data in response.iter_content(chunk_size=chunk_size):

# 向文件中写入指定的字符串data

f.write(data)

# 计算写入字符串的长度

size += len(data)

# flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

f.flush()

sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r')

sys.stdout.flush()

# 创建函数_get_download_url()并含有形参video_url:获得视频下载地址

def _get_download_url(self, video_url):

# 获取视频的下载地址

# Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。要想检查某个主机的 SSL 证书,你可以使用 verify 参数:

# 定义变量res用来接收视频地址,verify 仅应用于主机证书

res = requests.get(url=video_url, verify=False)

# 将res.text 文件利用'lxml'解析成xml文件,了解lxml--https://blog.csdn.net/tanzuozhev/article/details/50442243

soup = bs4.BeautifulSoup(res.text, 'lxml')

# 使用find_all来获取网页中JavaScript中的script的变量;[-1]去除最后一个字符

script = soup.find_all('script')[-1]

# 定义变量date=正则表达式\[(.+)]\,[0]可以使其返回一个字典

video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]

# 使用loads()下载

html = json.loads(video_url_js)

# 返回,使用[0]是返回一个字典

return html['video']['play_addr']['url_list'][0]

# 定义函数_parse_userID()且形参user_id;通过user_id获取该用户发布的所有视频

def _parse_userID(self, user_id):

# 获取所有视频

video_names = []

video_urls = []

unique_id = ''

# 当获取的id不是用户的id时:

while unique_id != user_id:

# 获取url-下载

search_url = 'https://api.amemv.com/aweme/v1/discover/search/?keyword={}&count=10&type=1&aid=1128'.format(user_id)

res = requests.get(url=search_url, verify=False)

res_dic = json.loads(res.text)

uid = res_dic['user_list'][0]['user_info']['uid']

aweme_count = res_dic['user_list'][0]['user_info']['aweme_count']

nickname = res_dic['user_list'][0]['user_info']['nickname']

unique_id = res_dic['user_list'][0]['user_info']['unique_id']

# 用户的url

user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id={}&max_cursor=0&count={}'.format(uid, aweme_count)

# 请求获取用户的url

res = requests.get(url=user_url, verify=False)

# 下载后去的url转换的文本

res_dic = json.loads(res.text)

i = 1

# 遍历下载的文本

for each in res_dic['aweme_list']:

share_desc = each['share_info']['share_desc']

if '抖音-原创音乐短视频社区' == share_desc:

video_names.append(str(i) + '.mp4')

i += 1

else:

video_names.append(share_desc + '.mp4')

video_urls.append(each['share_info']['share_url'])

return video_names, video_urls, nickname

"""

if __name__ == '__main__':

# 创建对象

sp = Spider()

sp.run()

"""

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

温馨提示: 有些库是要自己去下载,一般使用命令在提示符下输入:pip install 自己要下载的库,如下图是博主下载的。

2、在文件夹doy_ying下新建第二个文件:run.py

代码:

# coding=utf-8

"""

@author: jiajiknag

程序功能: 测试抖音视频的下载

"""

from dou_ying_video_download import Spider

if __name__ == '__main__':

# 创建类Spider()对象

sp = Spider()

# 运行开始下载

sp.run()

3、结果

这是我在抖音中随便找的一个发布抖音视频比较少的来测试一下,以及我还下载了自己(Jjk:624609873(douying number))的抖音

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持龙方网络。

python实现批量下载视频_python批量下载抖音视频相关推荐

  1. python爬app视频_python爬取抖音APP视频教程

    本文讲述爬取抖音APP视频数据(本文未完,后面还有很多地方优化总结) 公众号回复:抖音 即可获取源码 1.APP抓包教程,需要用到fiddler fiddler配置和使用查看>>王者荣耀盒 ...

  2. python爬抖音短视频_python爬取抖音小视频

    import os,json,requests #伪装头 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) App ...

  3. html怎样使一个视频充满整个屏幕,抖音视频怎么铺满全屏

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 抖音视频铺满全屏的方法是: 1.首先打开手机设置,然后点开通用. 2.然后在通用里面,点开辅助功能. 3.在复制功能有个缩放,打开 ...

  4. 怎么把html变成桌面壁纸,怎么把抖音视频设置成桌面 抖音视频设置壁纸教程

    想要把喜欢的抖音短视频设置成手机桌面壁纸吗,那怎么把抖音视频设置成桌面呢,这里带来抖音视频设置壁纸教程,图文攻略更易懂. 在抖音,当你遇到非常喜欢的短视频时,你肯定想把它保存下来,甚至设置成手机桌面动 ...

  5. php5.3n上传视频,为什么上传抖音视频不清晰

    上传抖音视频不清晰的原因是因为视频都是每张静态的照片信息组合而成,但由于算法和编码的不同会导致信息的流失,所以上传抖音视频时由于增加了数据编码而导致不清晰. 很多小伙伴在用抖音拍视频时,总会发现拍的视 ...

  6. 抖音视频置顶?抖音视频置顶功能全解!

    抖音是现在最火的短视频软件,每当我们查看其他抖音用户的主页时,可以发现它们的界面中有置顶视频,那么到底应该怎么置顶自己的视频呢? 目前来说,获得抖音的[视频置顶]功能主要有两种方式: 第一种:认证蓝V ...

  7. 《2019/04/12》java下载抖音视频

    java下载抖音视频 下载抖音视频,获取到抖音视频的下载地址之后,类似: String url = "https://aweme.snssdk.com/aweme/v1/play/?vide ...

  8. 抖音视频无水印下载工具 绿色版

    抖音视频无水印下载是一款用于抖音视频解析出来并下载的下载工具.可以轻松下载自己喜欢的视频,而且无水印,需要的快来下载使用吧! 抖音视频无水印下载 [工具特点] 支持解析任何抖音视频 解析出来的视频没有 ...

  9. 实现抖音视频抖动效果---OpenCV-Python开发指南(53)

    目录 抖音视频抖动原理 实现抖音视频抖动 抖音视频抖动原理 感兴趣的不妨随便弄一个视频使用抖音抖动效果观察.这里,博主建议读者使用国际象棋的视频图像,这种方块的格式更能看清细微的抖动变化. 我们观察抖 ...

  10. 短视频去水印助手 抖音视频怎样伪原创

             短视频去水印助手 抖音视频怎样伪原创          我们决定开始制作短片.如果您选择短视频合作伙伴,这些好处肯定会让您满意!,且头条广告福利还是可以的,普通广告一万的播放量是3~ ...

最新文章

  1. 什么是正定 半正定 矩阵 用通俗话解释的
  2. java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...
  3. 时间段为查询条件时的日期边界查询不到问题
  4. CDS – One Concept, Two Flavors
  5. go语言中变量的定义和使用
  6. shell 做加法运算_使用shell脚本实现加法乘法运算
  7. SET XACT_ABORT各种用法及显示结果
  8. 公众号精选评论点赞_12月评论:前10名和编辑精选
  9. Spring with Hibernate persistence and transactions
  10. 【量化投资】三大经典策略
  11. 谷歌浏览器所有页面都崩溃,设置都崩溃
  12. 趣味小游戏——扫雷(优化版)
  13. html怎么跟微信公众号关联,微信视频号怎么关联公众号?一步一步教你!
  14. 【Linux云计算架构:第三阶段-Linux高级运维架构】第26章——tcp三次握手四次挥手及在局域网中使用 awl伪装MAC地址进行多线程SYN攻击
  15. JAVA POI 读取2017Excel
  16. Session存值取值问题及取不到值的问题
  17. python将图片转换为抽象画
  18. 用低代码让数字化触手可及,奥哲完成数亿元C轮融资
  19. java中workbook_java workbook 类
  20. 2021-2027全球与中国音圈马达驱动芯片市场现状及未来发展趋势

热门文章

  1. RS-422接口定义
  2. 微型计算机启天m425显卡驱动,Lenovo联想启天M425台式机NVIDIA VGA驱动26.21.14.4223版For Win10-64(2020年4月7日发布)...
  3. apksigner --> apk签名工具
  4. 纬衡多个用户荣获“第五届建筑创作奖”
  5. ubuntu18.04 Nvidia 显卡的风扇调速及startx的后果 --转载
  6. Verilog -- 乘法器Booth算法
  7. jQuery的ajax教程
  8. PS滤镜-Topaz Photoshop Plugins Bundle
  9. 中小企业网络安全建设指引
  10. 学习笔记之极客时间《Java 核心技术面试精讲》