用Python全自动下载抖音视频!

/ 01 / Charles

用Charles来找视频的API接口,具体操作和之前当当网那个案例一样,不细说。

这里通过滑动抖音App,可以获取到视频的请求信息。

通过多次实验,发现链接的后面是会不停的改变,只有链接的前头始终不变,即「http://v1-dy」「http://v6-dy」「http://v9-dy」不变。

所以在写脚本的时候,可以以这些信息做为链接开头。

/ 02 / mitmproxy

利用mitmproxy中的mitmdump组件,对接Python脚本,用Python实现监听后的处理。

这里我只是利用脚本获取链接,并没有直接利用脚本下载视频。

因为我是在mitmdump.exe文件所在的文件夹运行脚本,脚本里导入不了requests模块。

不想搞那些烦人的环境变量,所以只获取链接。

然后再去下载视频,视频链接需要去重,可能会有重复的。

Python脚本如下。

def response(flow):
   urls = [‘http://v1-dy‘, ‘http://v3-dy‘, ‘http://v6-dy‘, ‘http://v9-dy‘]
   # 对url进行筛选,只选取视频的url
   for url in urls:
       if url in flow.request.url:
           print(‘\n\n抖音视频\n\n‘)
           with open(‘douyin.csv‘, ‘a+‘, encoding=‘utf-8-sig‘) as f:
               f.write(flow.request.url + ‘\n‘)

/ 03 / Appium

配置抖音的Appium参数。

点击蓝色按钮,手机自动启动抖音App!

接下来操作手机,然后点击Appium的刷新键,获取元素定位代码。

通过本次的实践发现Appium有时并不能很好的获取元素的定位,这可能就跟Web端的iframe页面一样。

所以针对找不到的元素,我直接对手机屏幕位置进行点击。

由于大家手机屏幕大小不同,这个参数肯定是会变化的,所以存在弊端,无法通用。

{  左右滑动切换图片  }

大致操作如上图。UP主的主页图漏了,请自行脑补,Python代码如下。

import time
import random
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support import expected_conditions as EC

def main():
   # 设置驱动配置
   server = ‘http://localhost:4723/wd/hub‘
   desired_caps = {
       ‘platformName‘: ‘Android‘,
       ‘deviceName‘: ‘STF_AL00‘,
       ‘appPackage‘: ‘com.ss.android.ugc.aweme‘,
       ‘appActivity‘: ‘.main.MainActivity‘,
       # 关闭手机软键盘
       ‘unicodeKeyboard‘: True,
       ‘resetKeyboard‘: True
   }
   driver = webdriver.Remote(server, desired_caps)
   wait = WebDriverWait(driver, 60)
   # 同意用户隐私协议,点击
   button_1 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/q6‘)))
   button_1.click()
   # 禁止电话权限,点击
   button_2 = wait.until(EC.presence_of_element_located((By.ID, ‘com.android.packageinstaller:id/permission_deny_button‘)))
   button_2.click()
   # 禁止位置权限,点击
   button_3 = wait.until(EC.presence_of_element_located((By.ID, ‘com.android.packageinstaller:id/permission_deny_button‘)))
   button_3.click()
   time.sleep(2)
   # 向上滑动,进入抖音视频播放页面
   TouchAction(driver).press(x=515, y=1200).move_to(x=515, y=1000).release().perform()
   # 这里需要设置一个较长时间的延迟,因为抖音有引导操作和提示,需等待片刻
   time.sleep(20)
   # 点击抖音"喜欢"处,以此进入登录界面
   TouchAction(driver).press(x=950, y=800).release().perform()
   # 点击密码登录
   button_4 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/afg‘)))
   button_4.click()
   # 输入账号
   button_5 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/ab_‘)))
   button_5.send_keys(‘你的账号‘)
   # 输入密码
   button_6 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/aes‘)))
   button_6.send_keys(‘你的密码‘)
   time.sleep(2)
   # 因为会跳出软键盘,会遮挡登录按钮,需点击软键盘取消
   TouchAction(driver).press(x=980, y=1850).release().perform()
   time.sleep(2)
   # 点击登录按钮
   button_7 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/abb‘)))
   button_7.click()
   time.sleep(2)
   # 登录成功,进入抖音视频界面,点击下方标题栏 "我"
   TouchAction(driver).press(x=990, y=1850).release().perform()
   # 进入个人主页,点击关注处
   button_8 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/a_7‘)))
   button_8.click()
   # 进入关注栏,点击第二个关注
   button_9 = wait.until(EC.presence_of_element_located((By.XPATH, ‘    /hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.LinearLayout/android.support.v7.widget.RecyclerView/android.widget.RelativeLayout[2]/android.widget.RelativeLayout[1]‘)))
   button_9.click()
   # 进入UP主主页,点击第一个视频
   button_10 = wait.until(EC.presence_of_element_located((By.ID, ‘com.ss.android.ugc.aweme:id/aqm‘)))
   button_10.click()
   # 不断下滑页面,直到底部
   while True:
       TouchAction(driver).press(x=515, y=1247).move_to(x=515, y=1026).release().perform()
       time.sleep(float(random.randint(5, 10)))

if __name__ == ‘__main__‘:
   main()

下载视频代码,需要对视频链接去重。

import pandas as pd
import requests
import os

num = 0
dom = []
folder_path = "F:/video/"
os.makedirs(folder_path)
df = pd.read_csv(‘douyin.csv‘, header=None, names=["url"])

# 对链接去重及去除刚进入抖音获取的视频链接
for i in df[‘url‘][2:]:
   if i not in dom:
       dom.append(i)

# 下载视频
for j in dom:
   url = j
   num += 1
   response = requests.get(url, stream=True)
   filename = str(num) + ‘.mp4‘
   with open(‘F:\\video\\‘ + filename, ‘ab+‘) as f:
       f.write(response.content)
       f.flush()
       print(filename + ‘下载完成‘)

最后成功获取小姐姐们的全部视频...

要是曾经在厂子里的我,那时会这骚操作该多好,哈哈。

其实我想的更多,多数妹子都挺喜欢拍抖音,不过她们应该不会下载这种操作滴。

那么小老弟们的机会就来了,下载下来喜欢的妹子的抖音视频。

然后剪辑出一个「最美瞬间」系列的视频,机会不就来了嘛...

原文地址:https://www.cnblogs.com/paisenpython/p/10295753.html

时间: 2024-07-30 12:34:23

用Python全自动下载抖音视频!的相关文章

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

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

超火的抖音视频怎么去水印

抖音作为如今比较活跃的一个短视频APP,吸引了很多用户,无关身份年龄,在抖音中就可以看遍世界,享受视觉盛宴,玩抖音的都知道每一个视频都会有一个水印,下载保存到相册时就会显示出来,看起来很不和谐,那超火的抖音视频怎么去水印呢?今天和大家一起来看看吧!1.先在电脑中安装去水印软件,不仅可以给图片去水印,还可以给视频去水印,功能多样,操作也比较简单方便,点击"视频去水印"即可进入视频去水印页面:2.点击下方的"添加视频",将要去水印的视频添加进去就行,可以批量添加哦,而且

如何给抖音视频选择配乐?音乐是抖音作品重要的组成部分

一个好的配乐对作品有着至关重要的作用,即使一个普通的视频,如果搭配了一个恰当的配乐,那么这个作品也会表现的非常好.在抖音上面我们应该都看到过这样的作品:只能简单的一个镜头,但是因为一个恰当的音乐,当两者结合起来的时候引起了大家的共鸣,获得了不俗的表现. 一首音乐有两个主要组成部分:词和曲 歌词 每首歌的歌词都可以看做是一个小故事,例如抖音上最近非常火爆的歌曲<只是太爱你>. 因为我不知道,下一辈子还是否能遇见你.所以我今生才会,那么努力 把最好的给你. 这首歌一般就是选择这四句副歌部分作为配乐

Puppeteer自动化批量上传抖音视频

前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =require('puppeteer'); const fs = require('fs'); var arry=[]; fs.readdir('video',function(err,files){ if(err){ console.log(err); } else{ (function getfi

别在学习今日头条互联网广告推广抖音视频营销方案产品运营框架了,那些让你起飞的计算机基础知识。

千万级大表如何优化,这是一个很有今日头条互联网广告推广抖音视频营销方案产品运营WX1526062597技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议. 我们知道了上述了解到了 TCP 的定义,通俗一点的讲,TCP 就是一个双方通信的一个规范标准(协议). 我们在学习 TCP 握手过程之前,首先必须了解 TCP 报文头部的一些标志信息,因为在 TCP 握手的过程中,会使用到这些报文信息,如果没有掌握这些信息

百万点赞怎么来?Python批量制作抖音的卡点视频原来这么简单!

1 目 标 场 景 玩抖音的朋友都应该知道,最近「卡点视频」简直不要太火.抖音上很多大神也出了剪辑各种卡点视频的教程. 实际上,利用很多手机 APP 或者 PR.FCPX 软件也可以制作卡点视频,但是剪辑效率都太慢.如果想实现一篮子剪辑素材,通过运行一段代码,得到一个卡点视频,这种感觉不要太爽. 本篇文章的目的是利用 Python 从一篮子素材中快速地剪辑卡点小视频这一操作. 2 准 备 工 作 首先,对视频的剪辑需要用到「opencv」库,通过 pip3 安装到虚拟环境中. # opencv

一篇文章教会你用Python抓取抖音app热点数据

今天给大家分享一篇简单的安卓app数据分析及抓取方法.以抖音为例,我们想要抓取抖音的热点榜数据. 要知道,这个数据是没有网页版的,只能从手机端下手. 首先我们要安装charles抓包APP数据,它是一款收费的抓包修改工具,易上手,数据请求容易控制,修改简单,抓取数据的开始暂停方便等优势,网上也有汉化版,下载地址为http://www.zdfans.com/html/42074.html,一路默认安装就ok了. 安装完成后要设置代理,依次点击代理——代理设置. 然后在手机端设置代理,如下图所示:

如何下载高清晰度音视频文件(youtube-dl 相关tips)

在油管下载的1080p以上的视频,一般是视频文件和音频文件分开的. 1.获得指定链接中的视频格式 youtube-dl --list-formats [url] 比如:youtube-dl --list-formats  https://www.youtube.com/watch?v=OAxsrhmWztA&t=2s 2.按format code下载指定的质量的视频 youtube-dl -f [format code] [url]  注:一般最好的格式是137 比如:youtube-dl -f

iOS 仿抖音 视频裁剪

1.最近做短视频拍摄.其中的裁剪界面要做得和抖音的视频裁剪效果一样 需求:  裁剪有一个最大裁剪时间.最小裁剪时间.左右拖动可以实时查看对应的视频画面.拖动进度条也能查看对应的画面 .拖动底部视图也能查看对应视频.查看的对应视频始终是进度条对应的位置 2.设计思路 底部是一个视频播放器 SJVideoPlayView 播放器上面试一个视频裁剪视图 SJVideoCropView 里面包含一个  UICollectionView  用来加载视频缩略图 左右滑块以及进度条 拖动左右滑块.进度条.以及