日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

用python制作個視頻下載器

瀏覽:108日期:2022-06-28 15:45:26
前言

某個夜深人靜的夜晚,夜微涼風微揚,月光照進我的書房~當我打開文件夾以回顧往事之余,驚現(xiàn)許多看似雜亂的無聊代碼。我拍腿正坐,一個想法油然而生:“生活已然很無聊,不如再無聊些叭”。于是,我決定開一個專題,便稱之為kimol君的無聊小發(fā)明。妙…啊~~~

眾所周知,視頻是一個學習新姿勢知識的良好媒介。那么,如何利用爬蟲更加方便快捷地下載視頻呢?本文將從數(shù)據(jù)包分析到代碼實現(xiàn)來進行一個相對完整的講解。

一、爬蟲分析

本次選取的目標視頻網(wǎng)站為某度旗下的好看視頻:

https://haokan.baidu.com1.視頻搜索

進入主頁后,我們可以看到一個搜索框歷歷在目:

用python制作個視頻下載器

當我們點擊搜索按鈕之后,會出現(xiàn)與關鍵字(ps.這里要考,大家仔細看😋)相匹配的視頻,我們需要做的便是抓包來分析其中的請求數(shù)據(jù)。

關于抓包工具,可以選擇三方工具(如Fiddler或者Burpsuit等),當然也可以選擇瀏覽器自帶的調(diào)試工具(在瀏覽器中按F12即可打開)。在這里我選擇了后者,打開F12調(diào)試工具,選擇網(wǎng)絡:

用python制作個視頻下載器

在點擊搜索按鈕之后我們可以看到相應的網(wǎng)絡請求出現(xiàn)在下面的工具框中:

用python制作個視頻下載器

通過簡單的查找之后我們可以很容易地發(fā)現(xiàn)對應的搜索請求(紅框標出部分),其對應的地址為:

https://haokan.baidu.com/videoui/page/search?query=kimol君666

那么,我們通過requests庫來模擬該請求,便可實現(xiàn)搜索視頻的功能:

import requestsres = requests.get(’https://haokan.baidu.com/videoui/page/search?query=xxxxx’)# xxxxx表示你需要搜索的關鍵字

注:這里不需要用到請求頭headers,但是不能一概而論。是否需要請求頭要根據(jù)具體網(wǎng)站分析哦~

你沒有看錯,我只用了2行代碼便實現(xiàn)了視頻網(wǎng)站的搜索功能。有時候,爬蟲就是這么簡單😉!在得到請求后,接下來我們要對這個請求返回的數(shù)據(jù)進行分析,同樣是在F12調(diào)試工具中點擊右側(cè)的響應便可以看到請求的響應:

用python制作個視頻下載器

很顯然,這里返回的是一個HTML格式的數(shù)據(jù),我們只需要通過re庫或是bs4庫等將我們需要的數(shù)據(jù)提取出來即可。至此,關于視頻搜索的分析基本算是完成了。然而!細心的小伙伴會發(fā)現(xiàn),我們現(xiàn)在可以獲得搜索結(jié)果,但是沒辦法選擇頁面呀。對嚯~那咋辦呀?

同樣,我們繼續(xù)抓包分析不就可以了嘛~ 我倒要看看你是怎么翻頁的。果然,下滑鼠標之后我們得到了新的請求:

用python制作個視頻下載器

其請求地址變?yōu)榱耍?/p>

https://haokan.baidu.com/videoui/page/search?pn=2&rn=10&_format=json&tab=video&query=kimol君666

請求多了pn、rn、_format、tab等參數(shù),而且請求返回的格式也變?yōu)榱薐SON格式(豈不美哉?更方便提取想要的數(shù)據(jù)了)。通過簡單測試可以知道,這些參數(shù)分別代表:

參數(shù) 說明 pn 請求的頁碼 rn 每次請求返回的數(shù)據(jù)量 _format 請求返回的數(shù)據(jù)格式 tab 請求的標簽類型

那么,相應的代碼可以改為:

import requestspage = 1keyword = ’xxxxx’ # xxxxx為搜索的關鍵字url = ’https://haokan.baidu.com/videoui/page/search?pn=%d&rn=10&_format=json&tab=video&query=%s’%(page,keyword)res = requests.get(url)data = res.json()

至此,視頻搜索部分的分析算是告于段落了。

2.視頻下載

視頻下載的思路也很清晰,只需進入播放視頻的界面找到相應的視頻原文件地址即可。小手一點,我們便進到了一個視頻的播放界面,我們可以發(fā)現(xiàn)其URL很有規(guī)律:它通過一個vid的參數(shù)來指向的相應視頻。

用python制作個視頻下載器

右鍵視頻播放頁面查看源碼(或者通過右鍵視頻檢查元素也可),我們可以找到視頻播放的src,其對應的正則表達式為:

p = ’<video src=(.*?)>’

那么,我們可以定義一個函數(shù)來解析視頻的原文件地址:

def get_videoUrl(vid): ’’’ 提取視頻信息中的視頻源地址 ’’’ res = requests.get(’https://haokan.baidu.com/v?vid=%s’%vid) html = res.text videoUrl = re.findall(’<video src=(.*?)>’,html)[0] return videoUrl

輸入視頻的id參數(shù),將返回視頻的真正文件地址。有了視頻的地址,要下載視頻便是信手拈來:

def download_video(vid): ’’’ 下載視頻文件 ’’’ savePath = ’xxxxx.mp4’ # 定義存儲的文件名 videoUrl = get_videoUrl(vid) # 獲取視頻下載地址 res = requests.get(videoUrl) with open(savePath,’wb’) as f: f.write(res.content)

至此,我們已經(jīng)可以根據(jù)關鍵字搜索相關的視頻,并且可以把視頻下載到本地了。這也意味著:關于本次視頻下載爬蟲的介紹也就結(jié)束了,剩下的就是根據(jù)自己實際需求對代碼進行包裝即可。

二、我的代碼

這里提供一個我自己的代碼,僅供參考:

# =============================================================================# 好看視頻_v0.1# =============================================================================import reimport osimport timeimport queueimport requestsimport threadingimport pandas as pdclass Haokan: def __init__(self): self.url = ’https://haokan.baidu.com/videoui/page/search?pn=%d&rn=20&_format=json&tab=video&query=%s’ self.headers = { ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0’, ’Accept’: ’text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8’, ’Accept-Language’: ’zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2’, ’Connection’: ’keep-alive’, ’Upgrade-Insecure-Requests’: ’1’, ’TE’: ’Trailers’, } self.savaPath = ’./videos’ # 視頻存儲路徑 def get_info(self,keywords,page): ’’’ 搜索關鍵字,獲取相關視頻信息 ’’’ self.result = [] # 相關視頻信息 for p in range(1,page+1): res = requests.get(self.url%(p,keywords),headers=self.headers) data = res.json()[’data’][’response’] videos = data[’list’] self.result.extend(videos) print(’'第%d頁'爬取完成!’%(p+1)) self.result = pd.DataFrame(self.result) self.result.to_excel(’%s.xlsx’%keywords,index=False) # 定義隊列,用于多線程下載視頻 self.url_queue = queue.Queue() for vid,url in zip(self.result[’vid’],self.result[’url’]): self.url_queue.put((vid,url)) def get_videoUrl(self,url): ’’’ 提取視頻信息中的視頻源地址 ’’’ res = requests.get(url,headers=self.headers) html = res.text videoUrl = re.findall(’<video src=(.*?)>’,html)[0] return videoUrl def download_video(self,videoId,videoUrl): ’’’ 下載視頻文件 ’’’ # 如果視頻存儲目錄不存在則創(chuàng)建 if not os.path.exists(self.savaPath): os.mkdir(self.savaPath) res = requests.get(videoUrl,headers=self.headers) with open(’%s/%s.mp4’%(self.savaPath,videoId),’wb’) as f: f.write(res.content) def run(self): while not self.url_queue.empty(): t_s = time.time() vid,url = self.url_queue.get() try: video_url = self.get_videoUrl(url) self.download_video(vid,video_url) except: print(’'%s.mp4'下載失敗!’%vid) continue t_e = time.time() print(’'%s.mp4'下載完成!(用時%.2fs)’%(vid,t_e-t_s)) if __name__ == '__main__': keywords = ’多啦A夢’ page = 1 # 爬取頁數(shù),每頁20條信息 t_s = time.time() haokan = Haokan() haokan.get_info(keywords,page) N_thread = 3 # 線程數(shù) thread_list = [] for i in range(N_thread): thread_list.append(threading.Thread(target=haokan.run)) for t in thread_list: t.start() for t in thread_list: t.join() t_e = time.time() print(’任務完成!(用時%.2fs)’%(t_e-t_s))

運行代碼,可以看到小頻頻全都來到我的碗里了😍~

用python制作個視頻下載器

寫在最后

今天分享的視頻下載算是最基礎的了,它宛如一位慈祥的老奶奶,慈眉善目,面帶笑容。它沒有各種繁瑣的反爬機制(甚至連headers都不進行驗證),而且數(shù)據(jù)返回的格式也是極其友好的,就連視頻格式也顯得如此的溫柔。

我相信在“她”的陪伴下,我們可以走好學習爬蟲的第一步。縱使日后我們還將面臨IP驗證、參數(shù)驗證、驗證碼、行為檢測、瑞數(shù)系統(tǒng)等等諸多反爬考驗,也許還需應對視頻格式轉(zhuǎn)換等挑戰(zhàn)。但是,請記住kimol君將始終陪伴在你們身邊~

最后,感謝各位大大的耐心閱讀,咋們下次再會~

以上就是用python制作個視頻下載器的詳細內(nèi)容,更多關于python 制作視頻下載器的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91久久午夜| 亚洲深夜视频| 日韩精品一二区| 国产精品丝袜xxxxxxx| 亚洲制服少妇| 视频一区二区中文字幕| 亚洲欧美在线专区| 欧美一级一区| 国产精品日韩精品中文字幕| 六月丁香综合在线视频| 日本久久综合| 欧美日韩免费观看一区=区三区| 久久大逼视频| 日韩精品免费视频一区二区三区 | 日韩高清中文字幕一区二区| 不卡专区在线| 国产伊人精品| 蜜臀av一区二区在线免费观看| 日韩中文字幕| 精品国产99| 国产综合激情| 日韩中文字幕| 丰满少妇一区| 一区在线免费| 日韩欧美美女在线观看| 欧美精品二区| 久久中文字幕二区| 视频一区二区中文字幕| 国产精品成人一区二区网站软件| 国产99在线| 午夜一级在线看亚洲| 91精品国产自产精品男人的天堂| 久久亚洲国产精品尤物| 91国语精品自产拍| 青草国产精品久久久久久| 国产一区二区三区不卡视频网站| 激情自拍一区| 日韩精品久久久久久| 国产一区精品福利| 99国产成+人+综合+亚洲欧美| 日本va欧美va精品| 日韩欧美一区二区三区在线观看| 丝袜美腿诱惑一区二区三区| 亚洲色图网站| 日本а中文在线天堂| 在线观看视频免费一区二区三区| 精品99在线| 亚洲永久精品唐人导航网址| 日本一区二区免费高清| 久久成人国产| 97精品国产| 日韩久久一区| 激情婷婷亚洲| 欧美韩一区二区| 视频一区二区三区入口| 精品一区二区三区中文字幕视频 | 日韩毛片在线| 欧美天堂一区| 日韩午夜精品| 国产一区二区久久久久| 免费在线观看精品| 国产精品久久久久久久久妇女| 天堂va蜜桃一区二区三区| 国产成人精品亚洲线观看| 中文字幕中文字幕精品| 色婷婷狠狠五月综合天色拍| 国产亚洲电影| 伊人久久婷婷| 成人国产精品一区二区网站| 亚洲精品字幕| 亚洲调教视频在线观看| 国产精品视频一区视频二区| 激情欧美一区二区三区| 久久一区精品| 日欧美一区二区| 视频一区中文| 首页国产精品| 欧美黑人巨大videos精品| 亚洲精品护士| 亚洲一卡久久| 99久久精品国产亚洲精品| 久久精品国产免费| 日韩视频一二区| 亚洲欧美高清| 国产一区二区中文| 日韩专区精品| 国产精品分类| 亚洲精品乱码日韩| 国产精品婷婷| 亚洲精品一区二区在线看| 国内不卡的一区二区三区中文字幕| 亚洲91网站| 天堂av在线一区| 蜜桃视频欧美| 亚洲二区在线| 999精品在线| 高清av一区二区三区| 在线手机中文字幕| 福利一区和二区| 精品久久91| 国产精品99久久免费观看| 另类国产ts人妖高潮视频| 日韩视频二区| 蜜桃一区二区三区| 激情久久五月| 亚洲手机视频| 午夜国产一区二区| 国产综合欧美| 在线精品视频在线观看高清| 极品裸体白嫩激情啪啪国产精品| 天堂8中文在线最新版在线| 国产在线一区不卡| 色婷婷色综合| 在线精品亚洲欧美日韩国产| 国产精品专区免费| 午夜精品成人av| 特黄毛片在线观看| 欧美日韩视频免费观看| 中文av在线全新| 婷婷激情一区| 国内精品福利| 亚洲综合丁香| 亚洲精品亚洲人成在线观看| 视频国产精品| 911精品国产| 美女国产精品久久久| 精品国产乱码久久久| а√天堂8资源中文在线| 91一区二区三区四区| 欧美不卡高清一区二区三区| 亚洲福利免费| 亚洲欧洲一区| 亚洲aa在线| 国产毛片精品| 成人午夜网址| 久久久成人网| 日韩网站在线| 午夜久久av | 9999国产精品| 99成人在线视频| 久久成人国产| 国产乱子精品一区二区在线观看 | 亚洲理论在线| 国产精品自在| 国产探花一区二区| 乱一区二区av| 久久麻豆精品| 亚洲精品韩国| 久久久免费人体| 久久久国产精品一区二区中文| 亚洲激情社区| 国产日韩视频| 日韩欧美午夜| 黄色国产精品| 日本午夜免费一区二区| 国产999精品在线观看| 国模 一区 二区 三区| 亚洲香蕉久久| 精品中文在线| 91九色精品| 日韩1区2区日韩1区2区| 91日韩免费| 蜜桃视频一区二区三区在线观看| 国产三级一区| 91精品国产乱码久久久久久久| 亚洲一二三区视频| 久久影院资源站| 伊人久久大香线蕉av超碰演员| 日韩激情一区二区| 亚洲精品**中文毛片| 久久国产99| 精品三级久久久| 国产美女精品| 精品免费av| 蜜桃av一区| 色爱综合网欧美| 亚洲精品在线二区| 色婷婷精品视频| 国产亚洲高清在线观看| 五月天久久777| 久久av日韩| 免费中文字幕日韩欧美| 精品黄色一级片| 亚洲综合小说| 四季av一区二区凹凸精品| 天堂成人免费av电影一区| 高清不卡一区| 日本精品国产| 国产真实久久| 国产高清亚洲| 免费在线成人网| 香蕉视频亚洲一级| 国产日韩欧美中文在线| 红桃视频欧美| 久久久久久一区二区| 97成人在线| 中文一区在线| 日韩欧美一区二区三区免费看| 欧美亚洲色图校园春色| 久久蜜桃资源一区二区老牛|