我是靠谱客的博主 丰富蜜粉,最近开发中收集的这篇文章主要介绍python 爬取视频,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# coding=utf-8
from selenium import webdriver
import requests,time,datetime,os,re
###########################################################
优秀电商开源系统地址提供学习: http://github.crmeb.net/u/fei
###########################################################
def get_m3u8_url(videoName):
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://ys6080.com")
time.sleep(2)
driver.find_element_by_xpath('(//input[@id="wd"])[1]').send_keys(videoName)
driver.find_element_by_xpath('(//input[@class="imgbt"])[1]').click()
countNumber = driver.find_element_by_xpath('//div[@class="main"]//strong[2]').text
print("搜索结果 {} 个资源".format(countNumber))
if int(countNumber) == 0:
print("很遗憾没有找到资源!")
elif int(countNumber) == 1:
driver.find_element_by_xpath('(//p[@class="name"])[1]').click()
elif int(countNumber) > 1:
for i in range(int(countNumber)):
xpathStr = '//div[@class="main"]//ul/li[{}]//span[@class="lzbz"]'.format(str(i+1))
videoInfo = driver.find_element_by_xpath(xpathStr).text
print(str(i+1)+"、"+videoInfo)
while True:
number = input("请输入所要下载的视频序号: ")
if int(number) > int(countNumber) or int(number) < 1:
print("序号不存在请重新输入!!!")
else:
driver.find_element_by_xpath('(//p[@class="name"])['+str(number)+']').click()
break
# 获取级数
parentPath = driver.find_element_by_xpath('//div[@id="vlink_1"]/ul')
allElList = parentPath.find_elements_by_tag_name("li")
countList = len(allElList)
print("一共有 {} 集视频,输入序号下载,不输入下载全部影集 ".format(str(countList)))
# 打印每集名称
for el in range(countList):
everyXpath = '//div[@id="vlink_1"]/ul/li[{}]/a'.format(str(el+1))
everyName = driver.find_element_by_xpath(everyXpath).text
print(str(el+1)+"、"+everyName)
numberJi = input("请输入所要下载的续集序号: ")
# 视频下载初始链接
iframeXpthList = []
if numberJi != "":
driver.find_element_by_xpath('//div[@id="vlink_1"]/ul/li['+numberJi+']/a').click()
iframeXpthList.append(driver.find_element_by_xpath('//td[@id="playleft"]/iframe').get_attribute("src"))
else:
# 获取所有链接
for ji in range(countList):
time.sleep(2)
driver.find_element_by_xpath('//div[@id="vlink_1"]/ul/li['+str(ji+1)+']/a').click()
iframeXpthList.append(driver.find_element_by_xpath('//td[@id="playleft"]/iframe').get_attribute("src"))
driver.back()
time.sleep(5)
driver.quit()
# 工共参数
globalUrl = "https://v4.szjal.cn"
# 获取ts视频流地址所有选择集数
m3u8UrlList = []
for m3u8Url in iframeXpthList:
regex = re.compile(r"url=(.*?).m3u8")
resp = requests.get(url=regex.findall(m3u8Url)[0]+".m3u8").text
# 获取信息分割后索引为2的为ts视频流获取地址
m3u8UrlList.append(resp.split("n")[2])
# 所有视频的ts集合的集合 [[],[]]
allTsUrlList = []
# 获取每一集的视频流集合
tsUrlList = []
for ts in m3u8UrlList:
tsUrlRespList = requests.get(globalUrl+ts).text.split("n")
for tsUrl in tsUrlRespList:
if ".ts" in tsUrl:
tsUrlList.append(globalUrl+tsUrl)
allTsUrlList.append(tsUrlList)
# 请求视频片段链接下载视频
filePath = "D:\python脚本\"
if not os.path.exists(filePath):
os.makedirs(filePath)
for everyVideoTsUrlList in allTsUrlList:
print("正在下载, 请稍后...")
videoName = datetime.datetime.now().strftime("%y%m%d%H%M%S")+".mp4"
for everyDownLoadUrl in everyVideoTsUrlList:
responseContent = requests.get(everyDownLoadUrl)
with open(filePath+videoName,"ab") as f:
f.write(responseContent.content)
print("视频下载完成,保存地址:{}".format(filePath))
get_m3u8_url(videoName="大仙尊")

 

最后

以上就是丰富蜜粉为你收集整理的python 爬取视频的全部内容,希望文章能够帮你解决python 爬取视频所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部