import os
#import xlrd
from selenium.webdriver.common.keys import Keys
#import xlwt
import requests
#from lxml import etree
import time
import random
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from socket import MSG_WAITALL
import selenium
import numpy
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
url='https://snapsave.io/zh-cn13' #下载工具地址,如果修改,后续代码也需要修改。
#手动输入txt文件,txt文件格式为视频“title,链接”,可以由我发布的上一个代码生成。
txt_file_name = '.\\'+input('请输入txt文件名(不含.txt后缀):')+ '.txt'
YTB_list = numpy.loadtxt(txt_file_name,dtype=str,delimiter=',',encoding='utf-8')
# 请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36'
}
s = Service(executable_path=r'.\\chromedriver.exe') #调用chromedriver.exe插件
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
browser = webdriver.Chrome(options=options,service=s)
ii=0
for jj in range(0,len(YTB_list)):
browser.get(url)
time.sleep(2)
browser.find_element(By.XPATH,'//*[@id="s_input"]').send_keys(YTB_list[jj][1]) #输入链接
time.sleep(3)
for i in range(1,10): #点击下载按钮。为防止加载时间过长,做了一个for+try组合,下同
try:
browser.find_element(By.XPATH,'//*[@id="search-form"]/button').click()
print('点击下载',i)
break
except:
time.sleep(5)
time.sleep(5)
for i in range(1,10):
try:
browser.find_element(By.XPATH,'//*[@id="btn-action"]').click()
print('点击getlink,等待转换',i)
break
except:
time.sleep(5)
time.sleep(5)
for i in range(1,10):
try:
browser.find_element(By.XPATH,'//*[@id="asuccess"]').click()
print('点击下载',i,'\n')
break
except:
time.sleep(5)
ii+=1
kk=0
print("第",ii,"个视频开始下载: ",YTB_list[jj][0])
#这里设置while+time.sleep,是用于自行手动修改延时用的。延时的目的是防止流量或者网络拥堵问题,导致下载失败。可以根据视频大小,修改360和5的数值大小。
while kk<360:
time.sleep(5)
kk+=1