日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧

發布時間:2024/5/14 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、準備工作

安裝 requests 庫和 beautifulsoup4 庫:

requests 庫是處理HTTP請求的一個簡潔且簡單的第三方庫;beautifulsoup4 庫是一個解析和處理HTML 和 XML 的第三方庫。

二、對網站HTML源碼進行分析

通過對 HTML 源碼進行分析,“ 歌手-歌名 ” 信息被封存在標簽中,標簽在 “class=pc_temp_songlist” 的 標簽中。因此,可以用在beautifulsoup4 中的 select 方法來進行篩選:

同樣對歌曲時長的分析方法也是跟上面一樣,對 select 的具體用法可以參考如下:

Python中在BeautifulSoup庫里的find_all、select用法

三、爬取酷狗Top500的歌曲

import requestsfrom bs4 import BeautifulSoupimport 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爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。