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

2022-10-03 12:57:14 字數 3623 閱讀 4955

前言

喜馬拉雅是專業的音訊分享平台,匯集了有聲**,有聲讀物,有聲書,fm電台,兒童睡前故事,相聲小品,鬼故事等數億條音訊,我最喜歡聽民間故事和德雲社相聲集,你呢?

今天帶大家爬取喜馬拉雅音訊資料,一起期待吧!!

這個案例的**位址在這裡

專案目標

爬取喜馬拉雅音訊資料

受害者位址

本文知識點:

1、系統分析網頁性質

2、多層資料解析

3、海量音訊資料儲存

環境:1.確定資料所在的鏈結位址(url)

2.通過**傳送url位址的請求

3.解析資料(要的, 篩選不要的)

4.資料持久化(儲存)

案例思路:

1. 在靜態資料中獲取音訊的id值

2. 傳送指定id值json資料請求(src)

3. 從json資料中解析音訊所對應的url位址 開始寫**

先導入所需的模組

import requests

import parsel # 資料解析模組

import re

確定資料所在的鏈結位址(url) 逆向分析 網頁性質(靜態網頁/動態網頁)

開啟開發者工具,**乙個音訊,在madie裡面可以找到乙個資料報

複製url,搜尋

找到id值

繼續搜尋,找到請求頭引數

url = 'youshengshu/4256765/p{}/'.format(page)

headers =

2.通過**程式設計客棧傳送url位址的請求

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

html_data = response.text

3.解析資料(要的, 篩選不要的) 解析音訊的 id值

selector = parsel.selector(html_data)

lis = selector.xpath('//div[@class="sound-list _is"]/ul/li')

for li in lis:

try:

title = li.xpath(程式設計客棧'.//a/@title').get() + '.m4a'

href = li.xpath('.//a/@href').get()

# print(title, href)

m4a_id = href.split('/')[-1]

# print(href, m4a_id)

# 傳送指定id值json資料請求(src)

json_url = 'revision/play/v1/audio?id={}&ptype=1'.format(m4a_id)

json_data = requests.get(url=json_url, headers=headers).json()

# print(json_data)

# 提取音訊位址

m4a_url = json_data['data']['src']

# print(m4a_url)

# 請求音訊資料

m4a_data = requests.get(url=m4a_url, headers=headers).content

new_title = change_title(title)

4.資料持久化(儲存)

with open('video\\' + new_title, mode='wb') as f:

f.write(m4a_data)

print('儲存完成:', title)

最後還要處理檔名非法字元

def change_title(title):

p = re.compile(r"[\/\\\:\*\?\"\\|]") # '/ \ : * ? " < > |'

new_title = re.sub(pattern, "_", title) # 替換為下劃線

return new_title

完整**

import re

import requests

import parsel # 資料解析模組

def change_title(title):

"""處理檔名非法字元的方法"""

pattern = re.compile(r"[\/\\\:\*\?\"\\|]") # '/ \ : * ? " < > |'

new_title = re.sub(pattern, "_", title) # 替換為下劃線

return new_title

for page in range(13, 33):

print('---------------正在爬取第{}頁的資料----------------'.format(page))

# 1.確定資料所在的鏈結位址(url) 逆向分析 網頁性質(靜態網頁/動態網頁)

url = 'youshengshu/4256765/p{}/'.format(page)

headers =

# 2.通過**傳送url位址的請求

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

html_data = response.text

# print(html_data)

# 3.解析資料(要的, 篩選不要的) 解析音訊的 id值

selector = parsel.selector(html_data)

lis = selector.xpath('//div[@class="sound-list _is"]/ul/li')

for li in lis:

try:

title = li.xpath('.//a/@title').get() + '.m4a'

href = li.xpa程式設計客棧th('.//a/@href').get()

# print(title, href)

m4a_id = href.split('/')[-1]

# print(href, m4a_id)

# 傳送指定id值json資料請求(src)

json_url = 'revision/play/v1/audio?id={}&ptype=1'.format(m4a_id)

json_data = requests.get(url=json_url, headers=headers).json()

# print(json_data)

# 提取音訊位址

m4a_url = json_data['data']['src']

# print(m4a_url)

# 請求音訊資料

m4a_data = requests.get(url=m4a_url, headers=headers).content

new_title = change_title(title)

# print(new_title)

# 4.資料持久化(儲存)

with open('video\\' + new_title, mode='wb') as f:

f.write(m4a_data)

print('儲存完成:', title)

except:

pass

執行**,效果如下圖

Python實戰爬蟲 爬取段子

不管三七二十一我們先導入模組 段子所在的 import re import requests 如果沒這模組執行cmd pip install requests領域 web開發,爬蟲,資料分析,資料探勘,人工智慧 零基礎到專案實戰,7天學習上手做專案 獲取 的內容 段子所在的 import re im...

python爬蟲實戰 爬取豆瓣影評資料

爬取豆瓣影評資料步驟 1 獲取網頁請求 2 解析獲取的網頁 3 提速資料 4 儲存檔案 1 匯入需要的庫 import urllib.request from bs4 import beautifulsoup 隨機數的庫 import random 時間庫 import time 庫 import ...

爬蟲 豆瓣電影爬取案例

直接上 僅供參考。目標爬取資料是某地區的 正在上映 部分的資料,如下圖 完整 如下 usr bin python coding utf 8 from lxml import etree import requests 目標 爬取豆瓣深圳地區的 正在上映 部分的資料 注意點 1 如果網頁採用的編碼方式...