为什么写这篇文章,主要是因为看了一篇文章。
用python在抖音(抖音)时扒窃了这个高颜值女神后,突然成为了人生的胜者。本文简述了一位工程师利用python ADB鹅厂的AI,一夜之间关注了一千多位漂亮姑娘。(威廉莎士比亚) (以英语发言)(以英语发言)(以英语发言)(以英语发言)。
充分体现了厂子里的大学生和工人们的不同,这里我不得不说一声×××牛皮...
曾经的我也独自一人在那个诺大的工厂思考人生,思考着我该何去何从。
记得那时我也靠着刷抖音,度过那段煎熬的日子。
只不过没有上面那位大佬那么厉害而已,我是人工识别漂亮的小姐姐...
即使现在的我也注册了鹅厂的AI账号,可我还是不会用。
那么就先来点简单的,提前关注好,然后利用Python实现自动化下载街拍视频!!!
这是小编准备的python学习资料,想学习python或者人工智能的都可以私信小编“01”获取学习资料!
/ 01 / Charles
用Charles来找视频的API接口,具体操作和之前当当网那个案例一样,不细说。
这里通过滑动抖音App,可以获取到视频的请求信息。
通过多次实验,发现链接的后面是会不停的改变,只有链接的前头始终不变,即「http://v1-dy」「http://v6-dy」「http://v9-dy」不变。
所以在写脚本的时候,可以以这些信息做为链接开头。
/ 02 / mitmproxy
利用mitmproxy中的mitmdump组件,对接Python脚本,用Python实现监听后的处理。
这里我只是利用脚本获取链接,并没有直接利用脚本下载视频。
因为我是在mi文件所在的文件夹运行脚本,脚本里导入不了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 : print(' 抖音视频 ') with open('douyin.csv', 'a+', encoding='utf-8-sig') as f: f.write( + ' ')/ 03 / Appium
配置抖音的Appium参数。
点击蓝色按钮,手机自动启动抖音App!
接下来操作手机,然后点击Appium的刷新键,获取元素定位代码。
通过本次的实践发现Appium有时并不能很好的获取元素的定位,这可能就跟Web端的iframe页面一样。
所以针对找不到的元素,我直接对手机屏幕位置进行点击。
由于大家手机屏幕大小不同,这个参数肯定是会变化的,所以存在弊端,无法通用。
{ 左右滑动切换图片 }
大致操作如上图。UP主的主页图漏了,请自行脑补,Python代码如下。
import time import random from appium import webdriver from import By from import WebDriverWait from a import TouchAction from import expected_conditions as EC def main(): # 设置驱动配置 server = 'http://localhost:4723/wd/hub' desired_caps = { 'platformName': 'Android', 'deviceName': 'STF_AL00', 'appPackage': 'com.;, 'appActivity': '.main.MainActivity', # 关闭手机软键盘 'unicodeKeyboard': True, 'resetKeyboard': True } driver = webdriver.Remote(server, desired_caps) wait = WebDriverWait(driver, 60) # 同意用户隐私协议,点击 button_1 = wait.until, 'com.;))) bu() # 禁止电话权限,点击 button_2 = wait.until, 'com.android.packageinstaller:id/permission_deny_button'))) bu() # 禁止位置权限,点击 button_3 = wait.until, 'com.android.packageinstaller:id/permission_deny_button'))) bu() (2) # 向上滑动,进入抖音视频播放页面 TouchAction(driver).press(x=515, y=1200).move_to(x=515, y=1000).release().perform() # 这里需要设置一个较长时间的延迟,因为抖音有引导操作和提示,需等待片刻 (20) # 点击抖音"喜欢"处,以此进入登录界面 TouchAction(driver).press(x=950, y=800).release().perform() # 点击密码登录 button_4 = wait.until, 'com.;))) bu() # 输入账号 button_5 = wait.until, 'com.;))) bu('你的账号') # 输入密码 button_6 = wait.until, 'com.;))) bu('你的密码') (2) # 因为会跳出软键盘,会遮挡登录按钮,需点击软键盘取消 TouchAction(driver).press(x=980, y=1850).release().perform() (2) # 点击登录按钮 button_7 = wait.until, 'com.;))) bu() (2) # 登录成功,进入抖音视频界面,点击下方标题栏 "我" TouchAction(driver).press(x=990, y=1850).release().perform() # 进入个人主页,点击关注处 button_8 = wait.until, 'com.;))) bu() # 进入关注栏,点击第二个关注 button_9 = wait.until, ' /hierarchy[2][1]'))) bu() # 进入UP主主页,点击第一个视频 button_10 = wait.until, 'com.;))) bu() # 不断下滑页面,直到底部 while True: TouchAction(driver).press(x=515, y=1247).move_to(x=515, y=1026).release().perform() (floa(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 = ('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 = reque(url, stream=True) filename = str(num) + '.mp4' with open('F:\video\' + filename, 'ab+') as f: f.write) f.flush() print(filename + '下载完成')最后成功获取小姐姐们的全部视频...
要是曾经在厂子里的我,那时会这骚操作该多好,哈哈。
其实我想的更多,多数妹子都挺喜欢拍抖音,不过她们应该不会下载这种操作滴。
那么小老弟们的机会就来了,下载下来喜欢的妹子的抖音视频。
然后剪辑出一个「最美瞬间」系列的视频,机会不就来了嘛...
/ 04 / 总结
代码都放「GitHub」上头了。