一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

手把手教你用Python打造一款批量下載視頻并能可視化顯示下載進(jìn)度的下載器

 Python進(jìn)階者 2023-02-10 發(fā)布于廣東

桃之夭夭,灼灼其華。

/1 前言/

    平時(shí)宅在家的我們最?lèi)?ài)做的事莫過(guò)于追劇了,但是有時(shí)候了,網(wǎng)絡(luò)原因,可能會(huì)讓你無(wú)網(wǎng)可上。這個(gè)時(shí)候那些好看的電視劇和電影自然是無(wú)法觀看了,本期我們要講的就是怎樣下載這些視頻。

/2 項(xiàng)目目標(biāo)/

    通過(guò)Python程序?qū)λ信d趣的視頻進(jìn)行批量下載。正好小編近期看到一些不錯(cuò)的視頻,因?yàn)橄胪沧糠较蜃撸挚嘤谥匦聦W(xué)習(xí)太復(fù)雜,有沒(méi)有簡(jiǎn)單點(diǎn)的,之前好像有什么e4a但是要學(xué)易語(yǔ)言就放棄了,于是乎在茫茫網(wǎng)絡(luò)發(fā)現(xiàn)了一個(gè)小眾的編程語(yǔ)言---裕語(yǔ)言。好家伙,不說(shuō)了,趕緊下載,盤(pán)它。

/3 效果展示/

1、采用sublime text 3 編寫(xiě)程序,先看看效果。

接下來(lái),由小編為大家展現(xiàn)程序的具體實(shí)現(xiàn)步驟。

/4 實(shí)現(xiàn)步驟/

1、分析網(wǎng)頁(yè)結(jié)構(gòu)。老樣子,審查元素定位,如下圖所示。

2、發(fā)現(xiàn)視頻全都在a標(biāo)簽里面,因?yàn)檫@個(gè)頁(yè)面的視頻比較多,所以我們繼續(xù)分析頁(yè)面,發(fā)現(xiàn)一個(gè)神奇的事情。哈哈,原來(lái)所有的視頻都在class為videoDown的a標(biāo)簽里,有了這個(gè)重要的信息就什么都好辦了。

3、直接上代碼和注釋。

#解析頁(yè)面
def parser():
ab=[]
rep=requests.get('http://v.:93/iappce.htm#sp',timeout=5,headers=headers)
rep.encoding='utf-8'
soup=BeautifulSoup(rep.text,'html.parser')
res=soup.find_all('a',class_='videoDown')#尋找所有class為videoDown的a標(biāo)簽
for y in res:
ab.append('http://v.:93'+y.attrs['href']) #將獲取到的視頻URL地址添加到列表中
return ab #返回所有視頻地址的列表

這樣就輕輕松松拿到了頁(yè)面所有的視頻地址,是不是超級(jí)簡(jiǎn)單了?

4、接下來(lái)就是下載文件。因?yàn)槲覀冎v的是批量下載,所以在此之前需要先了解單個(gè)下載,當(dāng)然,單個(gè)下載是很耗費(fèi)時(shí)間,而且系統(tǒng)資源利用率太低。我們來(lái)看看這個(gè)下載函數(shù)如何實(shí)現(xiàn),代碼如下所示。

#下載函數(shù)
def down(y,x):
print('------下載第',str(x),'課-------')
ss=str(y.split('.')[3:4]) \#截取文件名
sa=ss.replace('[','').replace(']','')\#替換文件名中的特殊符號(hào)
ree=requests.get(y)
with open('%d.%s.mp4'%(x,sa),'wb') as f:
f.write(ree.content) \#保存文件

5、無(wú)非就是一些常用的字符串分隔以及文件操作罷了,不過(guò)此種因?yàn)楸容^單一,下載多個(gè)文件就行不通了,所以一般只要不是大批量下載,這種方法就夠了。

6、然后在給他套一個(gè)函數(shù)用來(lái)簡(jiǎn)化它的啟動(dòng)之路。

def main():
for y in range(len(parser())):
down(parser()[y],y) \#下載
main()

7、最后調(diào)用主函數(shù)main,輕輕松松完成單個(gè)文件下載。

8、獲取文件大小并給下載文件添加緩沖。在下載視頻的時(shí)候如果我們一下子把所有的資源你都拿出來(lái)放進(jìn)CPU讀取,那么很快就會(huì)崩潰,所以我們需要設(shè)置一個(gè)緩沖,等他緩沖區(qū)滿(mǎn)了然后拿出來(lái)讀取,聽(tīng)起來(lái)好像挺抽象,讓我們一起來(lái)看一下吧。

9、上圖中所示即為視頻大小值和請(qǐng)求范圍的值。接下來(lái)我們使用代碼來(lái)獲取視頻大小。

def download(url, file_name): \#下載視頻
urllib3.disable_warnings()
rep=requests.get(url,headers=headers)
head=rep.headers
rep=requests.get(url,headers=headers)
head=rep.headers \#獲取請(qǐng)求頭字典
length=head.get('Content-Length') \#獲取到視頻的大小,單位是字節(jié)若想讓他以MB為單位,則需除以?xún)蓚€(gè)1024
file_size = int(length) \#視頻大小用int轉(zhuǎn)換
if os.path.exists(file_name): \#判斷文件名是否存在
first_byte = os.path.getsize(file_name) \#獲取文件名大小
else:
first_byte = 0
if first_byte \>= file_size:
return file_size \#返回文件大小
header = {"Range": "bytes=%s-%s" % (first_byte, file_size),
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
} \#設(shè)置請(qǐng)求頭,標(biāo)明請(qǐng)求范圍

10、配置對(duì)應(yīng)的進(jìn)度條,如下所示。

pbar = tqdm( \#配置進(jìn)度條模塊,設(shè)置文件大小,文件字節(jié)數(shù),文件的進(jìn)度
total=file_size, initial=first_byte,
unit='B', unit_scale=True, desc=url.split('/')[-1])
#關(guān)于tqdm 具體用法大家可以百度tqdm模塊。

11、添加緩沖

with closing(requests.get(url, headers=header, stream=True)) as req:  #關(guān)閉連接
with open(file_name,'wb') as f: \#打開(kāi)文件
for chunk in req.iter_content(chunk_size=1024\*2): \#設(shè)置緩沖
if chunk:
pbar.set_description("【正在下載視頻 %s】"%str(f.name))
f.write(chunk) \#寫(xiě)入文件
pbar.update(1024) \#更新當(dāng)前進(jìn)度條
pbar.close() \#關(guān)閉進(jìn)度條
return file_size \#返回文件大小

12、構(gòu)建下載視頻并顯示進(jìn)度條函數(shù)。

def fd(): \#下載并顯示進(jìn)度條
global x
x=1
for y in parser():
print('----正在下載',x,'課-----')
ss=str(y.split('.')[3:4])
sa=ss.replace('[','').replace(']','') \#文件名
download(y, "{}.{}.mp4".format(str(x),sa)) \#下載
print('----完成下載',x,'課-----')
x+=1

13、最后啟動(dòng)程序即可。

Fd()

/5 小結(jié)/

1、不建議抓取太多數(shù)據(jù),容易對(duì)服務(wù)器造成負(fù)載,淺嘗輒止即可。

2、希望通過(guò)這個(gè)項(xiàng)目,能夠幫助大家更好的了解如何去采集視頻。

3、本文基于Python網(wǎng)絡(luò)爬蟲(chóng),利用爬蟲(chóng)庫(kù),實(shí)現(xiàn)視頻數(shù)據(jù)的采集,方法行之有效。

4、批量下載視頻文件是一個(gè)不可多得的技術(shù),程序?qū)懙牟⒉粔蚝茫热绯绦驔](méi)有添加多線(xiàn)程,多進(jìn)程,協(xié)程,也沒(méi)有異步操作。感興趣的朋友可以入手拓展下。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    风韵人妻丰满熟妇老熟女av| 欧美日韩国产福利在线观看| 成人免费观看视频免费| 亚洲国产婷婷六月丁香| 九九九热视频最新在线| 国产综合香蕉五月婷在线| 久草视频这里只是精品| 一区二区三区在线不卡免费| 欧美黑人黄色一区二区| 成年人免费看国产视频| 国产欧美另类激情久久久| 国产成人精品久久二区二区| 日韩美女偷拍视频久久| 日本深夜福利在线播放| 欧美日韩校园春色激情偷拍| 深夜福利欲求不满的人妻| 国产精品免费视频视频| 国产在线小视频你懂的| 无套内射美女视频免费在线观看| 国产精品欧美激情在线| 欧美日韩有码一二三区| 欧美乱视频一区二区三区| 久久精品免费视看国产成人| 国产极品粉嫩尤物一区二区| 亚洲国产精品久久综合网| 九九九热视频免费观看| 开心久久综合激情五月天| 狠狠干狠狠操在线播放| 日本熟妇五十一区二区三区| 国产伦精品一一区二区三区高清版| 一区二区三区欧美高清| 亚洲综合色婷婷七月丁香| 日韩日韩欧美国产精品| 亚洲一区二区三区中文久久| 国产精品欧美一级免费| 风间中文字幕亚洲一区| 色丁香之五月婷婷开心| 亚洲一区二区三区精选| 国产一区日韩二区欧美| 九九热九九热九九热九九热| 成人国产一区二区三区精品麻豆|