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 系統分析網頁...