admin管理员组文章数量:1650874
酷狗音乐top500榜单就是我们今天需要爬取的对象,作为新手入门的代码,只需要将信息爬取下来即可,十分简单,不需要保存到数据库或保存到文件,仅当普通练习。
https://www.kugou/yy/rank/home/1-8888.html?from=rank
我们主要利用requests库和BeautifulSoup解析库
1.站点分析
下面是第一页和第二页的请求,很容易发现只需要改变home后面的数据即可翻页(别管底下的下载客户端)。
并且根据数量推断出有23页。
2.主要模块
- 构造多页URL
# 构造多页URL
urls = ['http://www.kugou/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1,24)]
- 获取信息 排行、歌手名、歌曲名、歌曲时长。
soup = BeautifulSoup(wb_data.text, 'lxml')
ranks = soup.select('span.pc_temp_num') # 排行
titles = soup.select('div.pc_temp_songlist > ul > li > a')
times = soup.select('span.pc_temp_tips_r > span') # 歌曲时长
3.代码
import requests
from bs4 import BeautifulSoup
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
'(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
}
def get_data(url):
data=requests.get(url=url,headers=headers)
soup=BeautifulSoup(data.text,"lxml")
ranks=soup.select('span.pc_temp_num') #排名
titles = soup.select('div.pc_temp_songlist > ul > li > a') # 歌手名和歌曲名
times=soup.select('span.pc_temp_time') #时长
for rank, title, time in zip(ranks, titles, times):
data = {
'rank': rank.get_text().strip(),
'singer': title.get_text().split('-')[0],
'song': title.get_text().split('-')[1], # 通过split获取歌手和歌曲信息
'time': time.get_text().strip()
}
print(data)
if __name__=='__main__':
urls = ['http://www.kugou/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1,24)]
for url in urls:
get_data(url) # 循环调用get_data()函数
运行结果截图:
版权声明:本文标题:python爬虫-爬取酷狗音乐top榜 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729549274a1206020.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论