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

标签中。因此,可以用 beautifulsoup4 中的 select 方法进行筛选:

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文件格式如下: 非常简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值