前言
喜馬拉雅是專業的音訊分享平台,匯集了有聲**,有聲讀物,有聲書,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 如果網頁採用的編碼方式...