1. 程式人生 > >python 2.7 音訊《三國演義》下載

python 2.7 音訊《三國演義》下載

自己總結的一些思路:
1.先到所要下載的音訊的網頁查詢網路的一些基本資訊(url,headers)
2.在network裡查詢json檔案,得到下載所在的網頁路徑
3.開始編碼
4.先正則匹配到每章節的id和名稱
5.找到該章節下載所在的網頁
6.正則匹配下載網頁裡的下載網址
7.以.m4a的 形式存到本地



#coding=utf-8
import requests
import re
from bs4 import BeautifulSoup

def  get_url(url):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",

    }

    res = requests.get(url, headers=headers)
    return res

def  main():
    url = "https://www.ximalaya.com/renwen/268522/"
    res = get_url(url)
    res.encoding="utf-8"
    html = res.text
    soup = BeautifulSoup(html, features='lxml')
#檢視一下網頁
    print soup.prettify()  # 將網頁格式化
#正則匹配一下《三國演義》的id以及他的章節名稱
    reg = 'href="/lishi/268522/(.*?)">(.*?)</a>'
    name_url = re.findall(reg,html)

    for sound_id,title in name_url:
#輸出id和章節檢視一下
        print sound_id,title
#找到對應章節下載的所在的網頁
        json.url = 'http://www.ximalaya.com/tracks/'+str(sound_id)+'.json'
        print json.url

        r = get_url(json.url)
#正則匹配一下下載路徑
        regs = '"play_path_64":"(.*?)"'
        sound_url = re.findall(regs,r.text)
        print sound_url[0]
#將該章節以.m4a形式下載到本地檔案中
        ret =get_url(sound_url[0])
        with open("C://img222//"+title+'.m4a','wb') as f:
            f.write(ret.content)


if __name__ == "__main__":
    main()