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

import os

import requests

import re

import sys

import asyncio

import aiohttp

headers = {

'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) '

'Version/11.0 Mobile/15A372 Safari/604.1'

}

VIDEO_URLS, PAGE = [], 1

def get_info(url):

"""

:param url: 用户的链接

:return:返回name,dytk,user_id 参数

"""

name = None

dytk = None

user_id = None

try:

response = requests.get(url, headers=headers)

user_id = response.url.split('/')[5].split('?')[0]

name = re.search(r'class="nickname">(.*?)<', response.text)[1]

dytk = re.search(r"dytk: '(.*?)'", response.text)[1]

except (TypeError, IndexError):

sys.stdout.write('Waring:输入的链接错误')

except requests.exceptions:

sys.stdout.write('Waring:链接错误')

finally:

return name, user_id, dytk

def make_dir(name):

"""

建立文件夹

:param name: 用户名称

:return:

"""

if not os.path.isdir(name):

os.mkdir(name)

else:

pass

def get_all_video(user_id, max_cursor, dytk):

"""

获取视频的地址

:param user_id:

:param max_cursor:

:param dytk:

:return:

"""

url = "https://www.amemv.com/aweme/v1/aweme/post/?"

params = {'user_id': user_id,

'count': 21,

'max_cursor': max_cursor,

'dytk': dytk}

try:

response = requests.get(url=url, params=params, headers=headers)

if response.status_code == 200:

datas = response.json()

for data in datas['aweme_list']:

name = data.get('share_info').get('share_desc')

url = data.get('video').get('play_addr').get('url_list')[0].replace('playwm', 'play')

VIDEO_URLS.append([name, url])

if datas['has_more'] == 1 and datas.get('max_cursor') != 0:

global PAGE

print(f'收集第{PAGE}页视频')

PAGE += 1

return get_all_video(user_id, datas.get('max_cursor'), dytk)

else:

print('收集完成')

return VIDEO_URLS

else:

print('状态码:', response.status_code)

return None

except Exception as e:

print('Waring:', e)

return

async def download_video(index, name, video_name, url):

"""

下载视频

:param index: 视频id

:param name: 用户名称

:param video_name: 视频名称

:param url: 下载url

:return:

"""

print(f'正在下载第{index}个视频:{video_name}')

video_path = '{}/{}.mp4'.format(name, video_name)

if not os.path.isfile(video_path):

try:

async with aiohttp.ClientSession() as session:

async with session.get(url=url, headers=headers, ssl=False) as response:

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

while True:

chunk = await response.content.read(1024)

f.write(chunk)

if not chunk:

break

print(f'下载完成第{index}个视频:{video_name}')

except Exception as e:

print('waring:download faild', video_name, e)

return

else:

print('文件已存在')

def main():

url = 'http://v.douyin.com/dEorkn/'

name, user_id, dytk = get_info(url)

if not (name, user_id, dytk):

return

make_dir(name)

get_all_video(user_id, 0, dytk)

print(f'{name}:总共有{len(VIDEO_URLS)}个视频')

tasks = []

for index, item in enumerate(VIDEO_URLS, 1):

video_name = item[0]

url = item[1]

tasks.append(asyncio.ensure_future(download_video(index, name, video_name, url)))

loop = asyncio.get_event_loop()

loop.run_until_complete(asyncio.wait(tasks))

loop.run_until_complete(asyncio.sleep(0))

loop.close()

print(f'{name}视频下载完成!')

if __name__ == '__main__':

main()

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

本文标题: python批量爬取下载抖音视频

本文地址: http://www.cppcns.com/jiaoben/python/262411.html

python自动搜索爬取下载文件-python批量爬取下载抖音视频相关推荐

  1. python爬取抖音用户数据_python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  2. Python爬虫学习,批量爬取下载抖音视频

    这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙 项目源码展示 ''' 注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料, ...

  3. Python爬虫学习教程,批量爬取下载抖音视频

    这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qu ...

  4. 抖音python上的代码视频_资深程序员:十行Python代码教你爬取抖音视频!

    环境说明 环境: python 3.7.1 centos 7.4 pip 10.0.1 部署 [root@localhost ~]# python3.7 --version Python 3.7.1 ...

  5. python爬取抖音用户数据_使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chro ...

  6. python下载文件加上日期_Python实现给下载文件显示进度条和下载时间代码

    本篇文章小编给大家分享一下Python实现给下载文件显示进度条和下载时间代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 该模块调用了三个库: 1. ...

  7. python 下载文件-Python下载文件的11种方式

    原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...

  8. python 遍历搜索 目录下所有文件

    python 遍历搜索 目录下所有文件 import osdef search_dir_all_files(input_dir):files_list=[]for root, dirs, files ...

  9. 100个python进阶实战小项目(适合新手) 微信撤回查看|抖音批量下载等

    Hi~,各位小伙伴,Python是目前编程语言中的主流语言之一,也是公认最容易入门的编程语言,因为Python语言近几年的火爆,有很多小伙伴都开始学习这门语言. 编程语言学习,最重要的是"多 ...

最新文章

  1. 2020 AI DEBATE即将召开, Judea Pearl、李飞飞等10多位顶级科学家参与 | AI日报
  2. 文远知行核武器曝光:无人车量产都靠它
  3. php 开发微信h5,微信h5页面开发遇到那些坑
  4. 《系统集成项目管理工程师》必背100个知识点-27产品范围和项目范围
  5. spark中的广播变量broadcast
  6. 循序渐进学Python2变量与输入
  7. 为什么不能同时用const和static修饰成员函数?
  8. 3.8女神节:我又送福利 书和化妆品 男女通吃
  9. python对csv数据提取某列的某些行_python pandas获取csv指定行 列的操作方法
  10. 基础篇:6.10)形位公差-包容原则与可逆原则的标注步骤全解;
  11. web测试的基本测试点
  12. (附源码)APP+spring boot心理健康线上咨询系统 毕业设计 031539
  13. java读取本地图片并在网页显示
  14. 盘点≠走过场,哪些功能可以进行高效库存盘点?
  15. 解码快手新市井电商,新品牌流量多,大品牌政策好
  16. 【win】系统工具Win PE
  17. 最简单可靠的机房温度电话报警
  18. Android Studio中Cannot resolve symbol XXX的解决方法
  19. 在同一台机运行多个mysql 服务 多个主/从在同一主机_[ 原创 ]在同一台机运行多个Mysql 服务 多个主/从在同一主机...
  20. Intel TBB 介绍

热门文章

  1. OSI,TCP/IP,五层协议的体系结构,以及各层协议
  2. 【c++基础】ifstream的构造函数
  3. vue组件化学习第三天
  4. 下拉菜单的option的value属性值问题
  5. 移动端web开发分享
  6. ETL工具箱 5提交维表
  7. Windows 2000/NT/XP管理员密码丢失解决方法
  8. centos7 harbor 单机搭建
  9. 修改Centos7默认yum源为阿里云源
  10. Zabbix监控实现跨区域跨网络监控数据