知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 公眾號(hào)相關(guān) >
使用splinter+requests批量下載微信公眾號(hào)中的音頻文件
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):50
需求分析
晚上老媽微信上給發(fā)了個(gè)豫劇公眾號(hào)的鏈接,要我?guī)退螺d到U盤(pán)上
打開(kāi)看了下,頁(yè)面還比較規(guī)矩,可以直接用CSS選擇器曬出來(lái)列表鏈接地址,再進(jìn)行遍歷獲取.
這里遇到一個(gè)小坑:公眾號(hào)中內(nèi)嵌音頻文件不會(huì)直接在頁(yè)面中加載<audio>
標(biāo)簽,只有在點(diǎn)擊播放按鈕后才會(huì)出來(lái),所以就不能直接解析HTML頁(yè)面了,用splinter
來(lái)操作Chrome模擬鼠標(biāo)點(diǎn)擊后再解析頁(yè)面就可以咯。代碼沒(méi)幾行,直接看注釋就可以了。
環(huán)境依賴(lài)
- Python 3.6+
- requests
- splinter
- chromedriver(需要與安裝的Chrome大版本一致)
運(yùn)行效果
完整代碼
import os
import requests as rq
from splinter import Browser
BASE_URL = 'https://mp.weixin.qq.com/s?__biz=MzU2OTI3NjQ4OA==&mid=100000538&idx=1&sn=419a647c0372d7630a197db9454bddc6&chksm=7c80623d4bf7eb2bca0756d63ee7250807d225a1fffe475db317d7c745b51074e5cc58b3e607&mpshare=1&scene=2&srcid=11076nyob9dLyKeQrFDgcnwY&sharer_sharetime=1565615878241&sharer_shareid=80ca6d7f86bae39e4b8264e1365d4b6a&from=timeline&clicktime=1565621528&key=0053416997e154650cb74184219ffa63550a1b3adf6c5c6bc705442434f0b0d05fbbe8217ed41a8f0f9165a2008bacbba44b624f535047b02cff8b47d698619ce97e48cf5663091b25deb3276764083a3719066790537f1813f0d7e3d5b6ae32fcc8cc3e49633034326feda342a8772d88981eedb113ea9a491c345c07ab271e&ascene=1&uin=MTY3NjYy&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=AaZhp%2BDCkmag01n7EMTREmg%3D&pass_ticket=hbFyRKZiXYK0ETPppZH0Xbwm2Tnpv7pFXeyOGE846fyLoLRcyDdPwaWI4mjwJzSu&wx_header=0'
bro = Browser('chrome')
if __name__ == '__main__':
# 訪(fǎng)問(wèn)目標(biāo)頁(yè)面
bro.visit(BASE_URL)
# 獲取所有列表DOM
links = bro.find_by_css('a[data-linktype="2"]')
# 由于后面需要進(jìn)行頁(yè)面跳轉(zhuǎn),所以先將列表信息解析后存到數(shù)組變量中
tasks = []
for link in links:
if link.text:
tasks.append({
'title': link.text,
'url': link['href']
})
# 開(kāi)始遍歷任務(wù)
for i, t in enumerate(tasks):
filename = t['title']
filepath = os.path.join(os.getcwd(), 'mp3', f'{filename}.mp3')
print(f'正在下載\t{i}/{len(tasks)}\t{filename}')
bro.visit(t['url'])
# 微信公眾號(hào)頁(yè)面中的音頻文件只有在點(diǎn)擊了開(kāi)始播放后才會(huì)在HTML中加載出來(lái)<audio>標(biāo)簽
bro.find_by_css('.audio_card_switch').click()
audio_src = bro.find_by_tag('audio')['src']
# 用requests直接下載到文件
open(filepath, 'wb').write(rq.get(audio_src).content)
bro.quit()
print('任務(wù)完成')
相關(guān)案例查看更多
相關(guān)閱讀
- 跳轉(zhuǎn)小程序
- 網(wǎng)站建設(shè)專(zhuān)家
- web學(xué)習(xí)路線(xiàn)
- 昆明網(wǎng)站設(shè)計(jì)
- 云南網(wǎng)站制作哪家好
- 曲靖小程序開(kāi)發(fā)
- 網(wǎng)站維護(hù)
- 云南手機(jī)網(wǎng)站建設(shè)
- 云南做軟件
- 云南花農(nóng)小程序
- Web開(kāi)發(fā)框架
- 網(wǎng)站建設(shè)電話(huà)
- 高端網(wǎng)站建設(shè)公司
- APP
- 退款
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 小程序被攻擊
- 網(wǎng)站建設(shè)高手
- 云南網(wǎng)站建設(shè)專(zhuān)業(yè)品牌
- 云南網(wǎng)站建設(shè)
- 網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)百度
- php網(wǎng)站
- 報(bào)廢車(chē)
- 網(wǎng)站開(kāi)發(fā)哪家好
- 搜索引擎優(yōu)化
- 云南做百度小程序的公司
- 小程序設(shè)計(jì)
- .net網(wǎng)站
- 英文網(wǎng)站建設(shè)公司