欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

使用splinter+requests批量下載微信公眾號(hào)中的音頻文件 - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(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)案例查看更多