喜馬拉雅 音訊爬取

2021-10-03 13:58:37 字數 1833 閱讀 4125

import requests

import parsel

headers =

'''介面的 url

每一集 都有相對應的 「id」 的引數值

'''def

down_mp4

(player,mp4_name)

: resp = requests.get(player,headers=headers)

path = r'c:\users\dell\desktop\python_wd\{}.mp4'

.format

(mp4_name)

with

open

(path,mode=

'wb'

)as f:

f.write(resp.content)

# 獲取真實的 url

# (url 中 缺少 id 值)

defget_playapi

(id_num)

: api_url =

''.format

(id_num)

resp_2 = requests.get(api_url,headers=headers)

data = resp_2.json(

)# json 資料型別轉化

api = data[

'data'][

'src'

]print

(api)

return api

# 名字獲取 得到 函式 down_mp4() 當中需要的 對應的 音訊名字

defget_id

(url)

:# 此 url 為頁面的位址

resp_3 = requests.get(url,headers=headers)

sel = parsel.selector(resp_3.text)

# 資料轉換

lists = sel.css(

'.sound-list ul li a'

)# 新的 資料提取方法(提取到 a 標籤, a 標籤中包含兩需要提取的資料)

forlist

in lists[0:

30]:# 真正需要的資料只有 30條 ,使用列表的切片來解決

api_id =

list

.css(

'a::attr(href)'

).extract_first(

) api_id = api_id.split(

'/')[-

1]# 字串分割 取最後一位

name =

list

.css(

'a::attr(title)'

).extract_first(

)# print(api_id,name)

yield api_id,name

defmain

(page)

: url =

''.format

(page)

midle = get_id(url)

# 選擇一變數來接收 get_id() 函式 返回的 兩個引數 分別是

# 音訊的名字

for api_id,name in midle:

api = get_playapi(api_id)

down_mp4(api,name)

if __name__ ==

'__main__'

:for page in

range(1

,31):

# 翻頁處理

main(page)

Python爬蟲 喜馬拉雅音訊爬取

爬取喜馬拉雅三國中的前十章音訊 匯入requests模組 import requests 匯入正規表示式 import re 解決反爬問題,匯入ua header 網頁源 中獲取的前十章id sound ids 64686514,64689648,64695831,64695832,3218935,...

Python爬蟲 爬取喜馬拉雅音訊資料詳解

喜馬拉雅是專業的音訊分享平台,匯集了有聲 有聲讀物,有聲書,fm電台,兒童睡前故事,相聲小品,鬼故事等數億條音訊,我最喜歡聽民間故事和德雲社相聲集,你呢?今天帶大家爬取喜馬拉雅音訊資料,一起期待吧!爬取喜馬拉雅音訊資料 受害者位址 環境 案例思路 先導入所需的模組 import requests i...

Python爬蟲實戰案例之爬取喜馬拉雅音訊資料詳解

前言 喜馬拉雅是專業的音訊分享平台,匯集了有聲 有聲讀物,有聲書,fm電台,兒童睡前故事,相聲小品,鬼故事等數億條音訊,我最喜歡聽民間故事和德雲社相聲集,你呢?今天帶大家爬取喜馬拉雅音訊資料,一起期待吧!這個案例的 位址在這裡 專案目標 爬取喜馬拉雅音訊資料 受害者位址 本文知識點 1 系統分析網頁...