本文的文字及圖片來源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,如有問題請(qǐng)及時(shí)聯(lián)系我們以作處理。
Python爬蟲、數(shù)據(jù)分析、網(wǎng)站開發(fā)等案例教程視頻免費(fèi)在線觀看
https://space.bilibili.com/523606542
Python爬蟲新手入門教學(xué)(一):爬取豆瓣電影排行信息
Python爬蟲新手入門教學(xué)(三):爬取鏈家二手房數(shù)據(jù)
Python爬蟲新手入門教學(xué)(四):爬取前程無憂招聘信息
Python爬蟲新手入門教學(xué)(五):爬取B站視頻彈幕
Python爬蟲新手入門教學(xué)(七):爬取騰訊視頻彈幕
Python爬蟲新手入門教學(xué)(八):爬取論壇文章保存成PDF
Python爬蟲新手入門教學(xué)(九):多線程爬蟲案例講解
Python爬蟲新手入門教學(xué)(十):爬取彼岸4K超清壁紙
Python爬蟲新手入門教學(xué)(十一):最近王者榮耀皮膚爬取
Python爬蟲新手入門教學(xué)(十二):英雄聯(lián)盟最新皮膚爬取
Python爬蟲新手入門教學(xué)(十三):爬取高質(zhì)量超清壁紙
Python爬蟲新手入門教程(十四):爬取有聲小說網(wǎng)站數(shù)據(jù)
Python爬蟲新手入門教學(xué)(十五):Python爬取某音樂網(wǎng)站的排行榜歌曲
Python 3.6
Pycharm
import osimport concurrent.futuresimport requestsimport parsel
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
雖然上面顯示需要付費(fèi)下載,但是一樣可以免費(fèi)下載。
打開開發(fā)者工具,點(diǎn)擊播放音頻,在Media中會(huì)加載出音頻的url地址。
如果想要驗(yàn)證這個(gè)鏈接是否是音頻的真實(shí)下載地址,可以復(fù)制鏈接粘貼到新的窗口中。
它會(huì)自動(dòng)下載一個(gè)音頻文件。并且這個(gè)音頻文件是可以播放的,和網(wǎng)頁上面的音頻聲音是可以對(duì)上的。
事實(shí)證明這個(gè)就是我們要獲取音頻地址。
https://downsc.chinaz.net/Files/DownLoad/sound1/202102/s830.mp3
老思路了,復(fù)制鏈接中的某些參數(shù)在開發(fā)者工具中進(jìn)行搜索,很明顯 s830 就是音頻的ID了。
搜索 s830 找到來源,發(fā)現(xiàn)網(wǎng)頁頁面中自帶有下載地址。獲取音頻下載地址之后需要自己拼接url。
網(wǎng)頁數(shù)據(jù)不復(fù)雜,相對(duì)而言還是比較簡(jiǎn)單的。
1、請(qǐng)求當(dāng)前網(wǎng)頁數(shù)據(jù),獲取音頻地址以及音頻標(biāo)題
2、保存下載就可以了
獲取音頻ID以及音頻標(biāo)題
def main(html_url): html_data = get_response(html_url).text selector = parsel.Selector(html_data) lis = selector.css('#AudioList .container .audio-item')for li in lis: name = li.css('.name::text').get().strip() src = li.css('audio::attr(src)').get() audio_url = 'https:' + src save(name, audio_url)print(name, audio_url)
保存數(shù)據(jù)
def save(name, audio_url): header = {'Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'} audio_content = requests.get(url=audio_url, headers=header).content path = 'audio\\'if not os.path.exists(path): os.mkdir(path) with open(path + name + '.mp3', mode='wb') as f: f.write(audio_content)
這里想要重新給一個(gè)headers參數(shù),不然會(huì)下載不了。代碼會(huì)一直運(yùn)行,但是沒有反應(yīng)
多線程爬取
if __name__ == '__main__': executor = concurrent.futures.ThreadPoolExecutor(max_workers=5)for page in range(1, 31): url = f'https://sc.chinaz.com/yinxiao/index_{page}.html'# main(url)executor.submit(main, url)
聯(lián)系客服