Python實(shí)現(xiàn)批量下載音效素材詳解
序言
作為當(dāng)代新青年,應(yīng)該多少會(huì)點(diǎn)短視頻制作吧?
哈哈,那當(dāng)代自媒體創(chuàng)作者好了~
制作視頻的時(shí)候,多少需要一些搞怪的聲音?或者奇怪的聲音?音樂(lè)等等~
一個(gè)個(gè)下載多慢,我們今天就用python實(shí)現(xiàn)批量下載~
環(huán)境/模塊/目標(biāo)
1、目標(biāo)
2、開(kāi)發(fā)環(huán)境
兄弟們,剛學(xué)Python的話,不要安裝一些其它的軟件,就裝這兩個(gè)就可以了~
Python 環(huán)境 Pycharm 編輯器
3、模塊
本次使用的模塊主要是這兩個(gè)
requests # 數(shù)據(jù)請(qǐng)求模塊 re # 正則表達(dá)式模塊
流程講解
這次我詳細(xì)寫(xiě)流程,小白都能看懂的那種,看完大家記得三連,給我一點(diǎn)創(chuàng)作的動(dòng)力吧 ,嘿嘿~
首先我們打開(kāi)網(wǎng)址后右鍵選擇檢查
選擇network ,刷新頁(yè)面往下滑,會(huì)出現(xiàn)一個(gè) page-4 和 page-5 的頁(yè)面。
這兩個(gè)頁(yè)面很多數(shù)據(jù)是直接在這里有的,我們隨便找一個(gè)點(diǎn)擊播放,然后點(diǎn)擊media ,在headers里面會(huì)有一個(gè)音頻文件,就是我標(biāo)注的下載地址。
可以直接播放也可以直接下載
那想獲得這個(gè)這個(gè)地址怎么搞呢?
我們直接復(fù)制這串?dāng)?shù)字,比如32716 ,然后點(diǎn)擊左上角的這個(gè)搜索框,搜索一下。
搜索之后我們可以看到page-5這里就有音頻的聲音鏈接地址。
音頻標(biāo)題也在這里可以找到
然后我們點(diǎn)擊headers,直接對(duì)于這個(gè)url地址發(fā)送請(qǐng)求。
首先導(dǎo)入requests模塊
import requests
url就是剛剛的鏈接
url = 'https://手動(dòng)替換一下/search/word-/page-5'
然后我們加一個(gè)headers進(jìn)行偽裝
這里直接復(fù)制 headers 下面的 user-agent 里面的內(nèi)容就好了
記得加上引號(hào)
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' }
然后發(fā)送請(qǐng)求,打印一下看看結(jié)果
response = requests.get(url=url, headers=headers) print(response.text)
打印出來(lái)的內(nèi)容太多了,我們直接在上面搜索MP3,精準(zhǔn)定位,它的標(biāo)題就在mp3文件下面那個(gè)鏈接那里。
然后我們把它復(fù)制過(guò)來(lái),用正則去匹配中間這段內(nèi)容,中間的url用(.*?)代替。
首先導(dǎo)入re模塊
import re
剛剛那段內(nèi)容復(fù)制過(guò)來(lái),.*?用括號(hào)括起來(lái)。
從 response.text 里面去匹配,匹配到的內(nèi)容用play_url_list這個(gè)變量接收。
play_url_list = re.findall('<div class="ui360 ui360-vis"><a href="(.*?)"></a></div>', response.text)
然后打印一下看看有沒(méi)有匹配到內(nèi)容
print(play_url_list)
可以看到直接匹配到了mp3文件,它包含在一個(gè)列表里面。
那我們還需要它的標(biāo)題名字,同樣的復(fù)制過(guò)來(lái)。
還是一樣的操作,url和名字都替換為 .*?
從 response.text 里面去匹配,匹配到的內(nèi)容用name_list這個(gè)變量接收。
name_list = re.findall('<a class="h6 text-white font-weight-bold" target="_blank" href=".*?" title="(.*?)">.*?</a>', response.text)
打印一下
print(name_list)
可以看到名字這些數(shù)據(jù),都已經(jīng)獲取到了。
遍歷一下,把獲取到的數(shù)據(jù)打包到一起,然后一個(gè)個(gè)提取出來(lái),獲取它的一個(gè)二進(jìn)制數(shù)據(jù)內(nèi)容,用mp3_content 這個(gè)變量接收一下
for play_url, name in zip(play_url_list, name_list): mp3_content = requests.get(url=play_url, headers=headers).content
然后直接保存,with open 給它一個(gè)文件夾的名字,加上名字,加上 .mp3的后綴,保存方式 mode = wb , 用 f.write 這個(gè)變量接收一下 mp3_content
with open('音效\\' + name + '.mp3', mode='wb') as f: f.write(mp3_content)
這里咱們沒(méi)有寫(xiě)自動(dòng)創(chuàng)建文件夾, 所以需要手動(dòng)創(chuàng)建一下文件夾,然后把你命名的名字寫(xiě)入進(jìn)來(lái)。
然后我們打印一下,看看結(jié)果。
print(name)
相關(guān)的數(shù)據(jù)內(nèi)容就保存在你創(chuàng)建的文件夾了
注:所有的url大家自己手動(dòng)替換一下,我這里把它們刪了,不然會(huì)誤殺
全部代碼
import requests import re url = 'https://這里大家自己替換一下/search/word-/page-5' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' } response = requests.get(url=url, headers=headers) # print(response.text) play_url_list = re.findall('<div class="ui360 ui360-vis"><a href="(.*?)"></a></div>', response.text) name_list = re.findall('<a class="h6 text-white font-weight-bold" target="_blank" href=".*?" title="(.*?)">.*?</a>', response.text) print(play_url_list) print(name_list) for play_url, name in zip(play_url_list, name_list): mp3_content = requests.get(url=play_url, headers=headers).content with open('音效\\' + name + '.mp3', mode='wb') as f: f.write(mp3_content) print(name)
到此這篇關(guān)于Python實(shí)現(xiàn)批量下載音效素材詳解的文章就介紹到這了,更多相關(guān)Python下載音效素材內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于python if 判斷選擇結(jié)構(gòu)的實(shí)例詳解
代碼執(zhí)行結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。這篇文章主要介紹了python if 判斷選擇結(jié)構(gòu)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05基于Python實(shí)現(xiàn)開(kāi)發(fā)釘釘通知機(jī)器人
在項(xiàng)目協(xié)同工作或自動(dòng)化流程完成時(shí),我們需要用一定的手段通知自己或他人。Telegram 非常好用,幾個(gè)步驟就能創(chuàng)建一個(gè)機(jī)器人,可惜在國(guó)內(nèi)無(wú)法使用。所以本文就來(lái)開(kāi)發(fā)一個(gè)釘釘通知機(jī)器人吧2023-02-02python 常用日期處理-- datetime 模塊的使用
這篇文章主要介紹了python 如何對(duì)日期進(jìn)行處理,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09python 實(shí)現(xiàn)將小圖片放到另一個(gè)較大的白色或黑色背景圖片中
今天小編就為大家分享一篇python 實(shí)現(xiàn)將小圖片放到另一個(gè)較大的白色或黑色背景圖片中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12完美解決python遍歷刪除字典里值為空的元素報(bào)錯(cuò)問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決python遍歷刪除字典里值為空的元素報(bào)錯(cuò)問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09Python退出While循環(huán)的3種方法舉例詳解
在每次循環(huán)結(jié)束后,我們需要檢查循環(huán)條件是否滿(mǎn)足。如果條件滿(mǎn)足,則繼續(xù)執(zhí)行循環(huán)體內(nèi)的代碼,否則退出循環(huán),這篇文章主要給大家介紹了關(guān)于Python退出While循環(huán)的3種方法,需要的朋友可以參考下2023-10-10python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法,有需要的朋友們可以參考學(xué)習(xí)下。2020-07-07Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法
這篇文章主要介紹了Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12