python作個小視頻批量下載器

遠程上班第一天,老闆讓我下載一些關於疫情防控的教育視頻,給各位同事羣發一下,我起初覺得很簡單,直接在騰訊視頻上下載不就好了,可是最後發如今騰訊下載的視頻是QLV格式的,還必需要騰訊的播放器,這也太不夠意思了,因而我又想到了you-get,但這個工具只能一個一個下載,也達不到我想要的效果,最終我仍是決定用python作個爬蟲工具,完全解決小視頻批量下載問題。
html


設計思路:
python

用PyQT5製做可視化界面,輸入下載關鍵詞、保存路徑等信息,將批量下載程序與開始按鈕綁定,將搜索的關鍵詞視頻保存到預約路徑。正則表達式


第一步:編寫python批量下載騰訊視頻程序數組


以「病毒 教育」關鍵詞爲例瀏覽器


圖片


主要分爲如下3個步驟:app

1.在當前網頁中找到每一個視頻的html地址,視頻總共有20頁,每頁能夠經過變化url的參數能夠獲得,打開瀏覽器自帶流量分析工具ide

圖片.png


先點擊左上角清理按鈕,再點擊下一頁,找到和網頁變化有關的url函數

圖片.png


如上圖所示,每頁的url由6個參數組成,其中ses能夠去掉,q和needCorrect都是要搜索的關鍵詞「病毒 教育」,stage是固定值,cur是當前頁碼,cxt是固定值,因此每頁的url構造以下:工具

圖片.png


而後用requests請求後用Beatifulsoup解析網頁佈局

圖片.png


代碼以下

圖片.png


打印出結果


圖片


2.試試在每一個視頻網頁元素中找到視頻的真實地址:

打開流量分析工具,播放視頻,找到mp4等類型的文件


圖片


複製這個請球地址,粘貼到迅雷中


圖片


發現這個地址能夠直接下載,那麼這就是咱們要找的視頻真實地址,它的url能夠分解爲:

圖片.png


其中,除了第三行guid是定值外,其他三個都是變化的,並且這三個參數都不能直接在網頁元素或者數據交換中找到,涉及到JavaScript加密問題,這裏再也不繼續深究。經查閱資料,發現視頻解析接口,只須要每一個視頻的vid信息就能夠返回以上全部數據

圖片.png


而vid值能夠在第一步最後打印信息中用正則表達式分離出來

圖片.png


用此接口發送請求,返回結果以下:

圖片.png


把咱們須要的參數取出來


圖片


多取1個title,做爲保存視頻的名字。


3.構造真實視頻url並保存到本地


圖片


第一行爲構造的視頻真實url,第二行用requests請求該地址,第三行爲以mp4格式保存到本地,‘ab’爲二進制保存方式。


第二步:用PyQt5製做可視化界面


1.先構造1個500X200的主窗口


圖片


首先要建立應用程序對象:app=QApplication(sys.argv),參數sys.argv是命令行參數,這使得能夠在電腦系統終端執行程序時,傳入命令參數,來執行不一樣的邏輯代碼。執行應用程序對象,進入消息循環等待退出: sys.exit(app.exec_()),Window()是主窗口的類,並添加titile


圖片


效果以下


圖片


2.以網格佈局方式加入控件

主要是有如下幾種方式

用QTextBrowser添加標籤框


圖片


最後一行四個參數分別是標籤框內容、以網格佈局時起始行數(從0起算)、起始列數(從0起算)、居中存放。

用QPushButton添加按鈕框


圖片


第三行用connect將start與「瀏覽按鈕綁定」,當點擊「瀏覽」按鈕時,會啓動start函數。


用QLineEdit添加輸入框,如下是關鍵字輸入框

圖片


點擊開始按鈕後,將會把輸入框的值取出


圖片


並用於上述爬視頻的代碼中,構造url。


最終效果以下:


圖片

相關文章
相關標籤/搜索