该文利用Requests和BeautifulSoup第三方库,爬去酷狗网榜单中酷狗TOP500的信息。
首先分析页面:https://www.kugou.com/yy/rank/home/1-8888.html
网页版酷狗不能手动翻页,进行下一步的浏览,但观察url可以尝试把1-8888的1替换成为2,在进行浏览,恰好返回的是第二页的信息。
经过多次尝试。发现更换不同数字,即跳转不同的页面,因此只需要更改home/后面的数字即可,由于每页只显示22条信息,所以我们抓取前500总共需要23个页面。
我们爬取的信息由排名情况、歌手、歌曲名和歌曲时长。
代码如下:
import requests from bs4 import BeautifulSoup import time headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 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') 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('-')[0], 'time':time.get_text().strip() } print(data) if __name__ == '__main__': urls = ['http://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1,24)] for url in urls: get_info(url) time.sleep(1)
程序分析:
实现效果: