python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!
soup.select('.pc_temp_songlist > ul > li >a')
同樣對歌曲時長的分析方法也如上,對 select 的具體用法可參考如下🔗:
Python中BeautifulSoup庫的find_all、select用法
三、爬取酷狗Top500的歌曲
import requests
from bs4 import BeautifulSoup
import json
# 獲取網頁的HTML源碼
def getText(url):
try:
r = requests.get(url, timeout=30) # get()函數的參數url必須鏈接采用HTTP或HTTPS方式訪問,每次請求超時時間為30秒
r.raise_for_status() # 返回的請求狀態status_code不是200,這個方法會產生一個異常
r.encoding = 'utf-8' # 對encoding屬性賦值更改編碼方式
return r.text
except:
return ""
# 解析HTML頁面格式,提取有用信息
def getInfo(url):
soup = BeautifulSoup(getText(url), 'html.parser') # 創建一個BeautifulSoup對象
songs = soup.select('.pc_temp_songlist > ul > li >a') # 獲取包含“歌手-歌名”信息的標簽
times = soup.select('.pc_temp_songlist > ul > li > span .pc_temp_time') # 獲取包含“歌曲時長”信息的標簽
for song, time in zip(songs, times):
data = {
"singer": song.get_text().split('-')[0],
"song title": song.get_text().split('-')[1],
"time": time.get_text().strip()
}
print(data)
SONGS.append(data)
SONGS = []
if __name__ == '__main__':
urls = ['https://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1, 24)]
for url in urls:
getInfo(url)
print("歌曲數量:", len(SONGS))
# 爬取的數據以JSON文件格式保存
with open('songs.json', 'w', encoding='utf-8') as json_file:
json_str = json.dumps(SONGS, ensure_ascii=False, indent=4)
json_file.write(json_str)
最終生成的json文件格式如下: 非常簡單
總結
以上是生活随笔為你收集整理的python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle区分度公式,区分度越大的列,
- 下一篇: 无线网络:家庭 WiFi 的安全隐患及实