网页视频抓取脚本( 如何在电脑前一边编程一边轻松地看抖音?)

优采云 发布时间: 2021-12-27 00:23

  网页视频抓取脚本(

如何在电脑前一边编程一边轻松地看抖音?)

  基于Python的抖音视频全自动下载

  更新时间:2020-11-06 11:34:48 作者:舒子华

  本文主要介绍基于Python的抖音视频全自动下载的实现。通过示例代码,文章中的介绍非常详细。对大家的学习或工作有一定的参考学习价值。有需要的朋友可以参考

  很多人都喜欢玩抖音,我也喜欢看抖音*敏*感*词*姐,但是拿着手机一个一个的找视频太难了。作为程序员,如何在电脑前边编程边轻松观看抖音*敏*感*词*姐?

  使用Python,简单三步就可以自动下载喜欢的抖音姐妹们的视频。

  查尔斯

  Charles是一款App抓包工具,功能与Fildler类似。可用于获取App运行过程中发生的所有网络请求和响应。

  在电脑上下载安装Charles后,需要配置证书,最后启用SSL监控。

  手机端需要和电脑在同一个网络,比如都连接到家里的Wi-Fi,然后在手机的Wi-Fi高级选项中使用Charles代理,输入手机的IP地址计算机,端口 8888,最后命名证书。

  连接完成后,手机打开抖音App,通过操作App的动作,即可获取视频的请求信息。

  

  通过多次实验发现,链接的背面是不断变化的,只有链接的正面总是相同的,即“”“”“”没有变化。

  所以在编写脚本时,可以将此信息作为链接的开头。

  中间件代理

  

  使用 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')

  配置抖音Appium参数:

  

  点击蓝色按钮,手机将自动启动抖音应用程序。然后操作手机,然后点击Appium的刷新按钮,获取元素位置码。

  通过这种实践,发现Appium有时无法很好的获取元素的定位。对于找不到的元素,我直接点击手机屏幕的位置。

  由于每个人的手机屏幕大小不一样,这个参数肯定会发生变化,所以有弊端,不能通用。

  左右滑动切换图片

  

  

  

  一般操作如上图所示。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 + '下载完成')

  终于成功获取了*敏*感*词*姐们的所有视频:

  

  打算把视频里所有喜欢的妹子都剪辑起来,拍个《最美瞬间》系列的视频分享给大家!

  源地址:

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线