欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)一鍵下載視頻腳本

 更新時間:2022年01月06日 09:38:33   作者:OpenHacker  
這篇文章主要為大家分享了一個用Python編寫的一鍵下載視頻的腳本,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

需求

小編通常會上一些專業(yè)的視頻網(wǎng)站比如騰訊視頻、優(yōu)酷,在上面看電影、電視劇。這些網(wǎng)站有個優(yōu)點,可以緩存視頻,在通勤路上比如地鐵就可以愉快的刷劇了,因為地鐵上的網(wǎng)速通常不怎么好。

但是有一些經(jīng)典電影或者電視劇,這些視頻并沒有提供,那么我們只能上一些小電影網(wǎng)站看了,資源是有了,但是問題來了,這些小電影網(wǎng)站大多數(shù)都沒有視頻下載功能,那在地鐵上就沒法看了。

如果可以把這些視頻下載下來,再傳輸?shù)绞謾C里不就可以離線看了嗎?

接下來小編就演示下如何用 python 腳本來實現(xiàn)一鍵下載小電影網(wǎng)站的視頻。

以下腳本可以學習到

  • python selenium 的使用
  • python requests 的使用
  • 分片下載視頻存儲本地
  • 實時輸出視頻下載進度

注意:

這里的腳本主要用于測試學習目的,切勿用于生產(chǎn)環(huán)境等商業(yè)目的

推薦大家訪問官方指定平臺或?qū)I(yè)視頻網(wǎng)站,支持正版

解決方案

小編以經(jīng)??吹脑诰€之家為例,這個網(wǎng)站可以找到很多美劇資源。

首先,我們用谷歌瀏覽器打開一個視頻地址,比如https://www.zxzj.fun/video/1529-1-1.html,按F12或者右擊“檢查”打開瀏覽器控制臺

然后,點擊控制臺最左邊的選擇元素按鈕,或者按Ctrl + Shift + C,選擇網(wǎng)頁的視頻區(qū)域,就能看到video標簽

<video
  class="dplayer-video dplayer-video-current lwebapp.com"
  webkit-playsinline=""
  playsinline=""
  preload="metadata"
  src="https://vod.pipi.cn/8f6897d9vodgzp1251246104/1881b495387702292624167851/f0.mp4"
></video>

可以發(fā)現(xiàn)src屬性值就是視頻鏈接,并且是采用單獨的.mp4視頻地址,這種地址原理上可以直接從瀏覽器下載的,直接復(fù)制這個地址在瀏覽器打開,就可以右擊下載。但是電視劇通常有很多集,每次都手動打開網(wǎng)頁-打開控制臺-復(fù)制視頻地址-再打開視頻-最后下載視頻,就很繁瑣。這時候就是腳本排上用場的時候了,可以把這個流程自動化,簡化重復(fù)操作的過程。

腳本的整體思路

  • 使用selenium打開網(wǎng)頁
  • 通過selenium元素選擇器找到video標簽所在的iframe,切換到iframe
  • 通過video標簽,獲取到視頻地址,然后請求視頻內(nèi)容
  • 采用分片下載的方式拼接視頻存儲到本地

代碼

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 首發(fā) lwebapp.com
import requests
# 谷歌瀏覽器驅(qū)動
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# sleep模塊,讓程序停止往下運行
from time import sleep

# 設(shè)置谷歌瀏覽器驅(qū)動
driver = webdriver.Chrome()

# 手動改為想要下載的視頻所在網(wǎng)頁地址
url = 'https://www.zxzj.fun/video/1529-1-1.html'

# 打開網(wǎng)頁
driver.get(url)

try:
  # 通過元素選擇器找到iframe
    iframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located(
            (By.CSS_SELECTOR, '#playleft iframe'))
    )
except:
    driver.quit()

# 獲取到網(wǎng)頁title,便于直觀看到當前下載的視頻標題
title = driver.find_elements(By.TAG_NAME, 'title')[
    0].get_attribute('innerHTML')

# 切換到iframe
driver.switch_to.frame(iframe)

# 通過video標簽獲取視頻地址
video = driver.find_elements(By.TAG_NAME, 'video')[0]
video_url = video.get_attribute('src')
print('video', video_url)

# 已經(jīng)獲取到視頻地址,可以關(guān)閉瀏覽器
driver.quit()

# 設(shè)置請求頭信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62'
}

# 請求視頻內(nèi)容
video_content = requests.get(video_url, headers=headers, stream=True)

print("開始下載")

# 視頻大小
contentLength = int(video_content.headers['content-length'])

line = '大小: %.2fMB'

# 大小換算
line = line % (contentLength/1024/1024)

# 打印視頻總長度
print(line)

# 存儲已經(jīng)下載的長度
downSize = 0

print('video_name', title)

# 分片下載
with open(title+'.mp4', "wb") as mp4:
    for chunk in video_content.iter_content(chunk_size=1024 * 1024):
        if chunk:
            mp4.write(chunk)

            # 記錄已下載視頻長度,實時輸出下載進度
            downSize += len(chunk)
            print('進度:{:.2%}'.format(downSize / contentLength), end='\r')

print("下載結(jié)束")

總結(jié)

以上簡單展示了使用 python 的requests、selenium庫來下載一個mp4視頻,可以當做一個學習案例。

其中還有很多待改進的地方

1.每次運行腳本只能解析下載一個視頻,或許可以改進為批量解析出一個視頻列表來下載

2.換視頻地址下載,需要手動改源碼的url地址,可以改進做一個界面交互來讓用戶輸入

3.當前只適配了特定網(wǎng)站的視頻地址解析,其他地址不支持,可以改進針對不同的網(wǎng)站單獨出解析函數(shù)來匹配

到此這篇關(guān)于Python實現(xiàn)一鍵下載視頻腳本的文章就介紹到這了,更多相關(guān)Python下載視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Python的setuptools框架下生成egg的教程

    在Python的setuptools框架下生成egg的教程

    這篇文章主要介紹了在Python的setuptools框架下生成egg的教程,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Java多線程實現(xiàn)四種方式原理詳解

    Java多線程實現(xiàn)四種方式原理詳解

    這篇文章主要介紹了Java多線程實現(xiàn)四種方式原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python tkinter 樹形列表控件(Treeview)的使用方法

    Python tkinter 樹形列表控件(Treeview)的使用方法

    這篇文章主要介紹了Python tkinter 樹形列表控件(Treeview)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 使用python將圖片格式轉(zhuǎn)換為ico格式的示例

    使用python將圖片格式轉(zhuǎn)換為ico格式的示例

    今天小編就為大家分享一篇使用python將圖片格式轉(zhuǎn)換為ico格式的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python?列表(list)的常用方法

    Python?列表(list)的常用方法

    這篇文章主要介紹了Python?列表(list)的常用方法,這節(jié)主要講列表,列表用于存儲任意數(shù)目、任意類型的數(shù)據(jù)集合,本文通過示例代碼給大家詳細講解,需要的朋友可以參考下
    2023-05-05
  • Python微信公眾號開發(fā)平臺

    Python微信公眾號開發(fā)平臺

    這篇文章主要介紹了Python微信公眾號開發(fā)平臺,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2018-01-01
  • PyCharm 2020.2 安裝詳細教程

    PyCharm 2020.2 安裝詳細教程

    這篇文章主要介紹了PyCharm 2020.2 安裝詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • python中Ansible模塊的Playbook的具體使用

    python中Ansible模塊的Playbook的具體使用

    這篇文章主要介紹了python中Ansible模塊的Playbook的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python編程之列表操作實例詳解【創(chuàng)建、使用、更新、刪除】

    Python編程之列表操作實例詳解【創(chuàng)建、使用、更新、刪除】

    這篇文章主要介紹了Python編程之列表操作,結(jié)合實例形式分析了Python列表的創(chuàng)建、使用、更新、刪除等實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • 基于Python代碼編輯器的選用(詳解)

    基于Python代碼編輯器的選用(詳解)

    下面小編就為大家?guī)硪黄赑ython代碼編輯器的選用(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論