抖音视频无水印下载
selenium yyds!!!
顺便推荐份通过api下载的py
我是没找到这api在哪,f12都翻烂了,直接懒人selenium了=_=
https://github.com/downdawn/JSreverse/blob/master/%E6%8A%96%E9%9F%B3/dy/parse_video.py
(代码失效,新的在后面更新了)
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import re
url = input('下载链接:')
if not url.startswith('https://www.douyin.com/video/'):
r = '.*?(https://v.douyin.com/.*?/).*?'
url = re.findall(r, url)[0]
print(url)
a = Options()
a.add_experimental_option("excludeSwitches", ["enable-automation"])
a.add_argument("--disable-blink-features=AutomationControlled")
a.add_argument('--headless')
a.add_argument('window-size=1920x1080') # 指定浏览器分辨率
with open('./stealth.min.js') as fp:
js = fp.read()
bro = webdriver.Chrome(options=a)
# 加载规避js
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js})
bro.maximize_window()
bro.get(url)
time.sleep(2)
# 动作获取标签
url_mp4 = bro.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[1]/div[2]/video').get_attribute("src")
name = bro.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[2]/h1/span[2]').text
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
response = requests.get(url_mp4,headers = headers)
code = response.status_code
print('\n响应码:',code)
content = response.content
with open('%s.mp4'%name,'wb') as fp:
fp.write(content)
if code == 200:
print('下载成功')
bro.quit()
更新
抖音加了无头浏览器检测,,js规避不了,暂时不用无头了
顺便加了EC动态等待,不用傻傻sleep了
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import re
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = input('下载链接:')
if not url.startswith('https://www.douyin.com/video/'):
r = '.*?(https://v.douyin.com/.*?/).*?'
url = re.findall(r, url)[0]
print(url)
a = Options()
a.add_experimental_option("excludeSwitches", ["enable-automation"])
a.add_argument("--disable-blink-features=AutomationControlled")
# a.add_argument('--headless')
a.add_argument('window-size=1920x1080') # 指定浏览器分辨率
with open('./stealth.min.js') as fp:
js = fp.read()
bro = webdriver.Chrome(options=a)
# 加载规避js
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js})
bro.maximize_window()
wait = WebDriverWait(bro, 5)
bro.get(url)
# 动作获取标签
# bro.get_screenshot_as_file('1.png')
url_mp4 = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[1]/div[2]/video'))).get_attribute("src")
name = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[2]/h1/span[2]'))).text
# url_mp4 = bro.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[1]/div[2]/video').get_attribute("src")
# name = bro.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[2]/h1/span[2]').text
bro.quit()
print('开始下载...')
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
response = requests.get(url_mp4,headers = headers)
code = response.status_code
print('\n响应码:',code)
content = response.content
with open('%s.mp4'%name,'wb') as fp:
fp.write(content)
if code == 200:
print('下载成功')