酷狗音乐: https://www.kugou.com/
(1)我们爬取的是这里, url : https://www.kugou.com/yy/rank/home/2-8888.html
通过观察url , 改变/2-8888.html 就是第二页, 所以每一页都是
https://www.kugou.com/yy/rank/home/{ }-8888.html 这样的url 形式
(2)我们需要爬取的信息有
代码:
import requests
from bs4 import BeautifulSoup
import time
#加入请求头
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'
}
def get_info(url):
#获取页面需要的信息, 这里我们需要 排名, 歌手的名字,音乐名,播放时间
wb_data = requests.get(url,headers=headers)
soup = BeautifulSoup(wb_data.text,'lxml') # 解析网页信息
ranks = soup.select('span.pc_temp_num') # 用select 获取ranks 标签
titles = soup.select('div.pc_temp_songlist > ul > li > a')
times = soup.select('span.pc_temp_tips_r > span')
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],
'time':time.get_text().strip()
}
print(data)
if __name__ == '__main__':
urls = ['https://www.kugou.com/yy/rank/home/{}-8888.html'.format
(str(i)) for i in range(1,10)] # 生成url 链接
for url in urls:
get_info(url)
time.sleep(1) #睡眠1秒
# print(url)
部分展示:
{'rank': '1', 'singer': '陈雪凝 ', 'song': ' 你的酒馆对我打了烊', 'time': '4:11'}
{'rank': '2', 'singer': '陈雪凝 ', 'song': ' 绿色', 'time': '4:29'}
{'rank': '3', 'singer': '王琪 ', 'song': ' 万爱千恩', 'time': '5:22'}
{'rank': '4', 'singer': '大壮 ', 'song': ' 伪装', 'time': '5:01'}
{'rank': '5', 'singer': '王琪 ', 'song': ' 站着等你三千年', 'time': '6:21'}
{'rank': '6', 'singer': '孤独诗人 ', 'song': ' 渡我不渡她', 'time': '3:02'}
{'rank': '7', 'singer': '花姐 ', 'song': ' 狂浪', 'time': '3:01'}
{'rank': '8', 'singer': '周杰伦 ', 'song': ' 告白气球', 'time': '3:35'}
{'rank': '9', 'singer': '蕾蕾的小麦霸们、张振轩 ', 'song': ' 赢在江湖 (童声版)', 'time': '3:46'}
{'rank': '10', 'singer': '张紫豪 ', 'song': ' 可不可以', 'time': '4:00'}