酷狗網址:https://www.kugou.com/yy/rank/home/1-8888.html?from=rank 環境:eclipse+pydev 請求頭獲取方式:打開chrome瀏覽器,輸入chrome://version,添加時加上‘User-Agent’:即可(獲得信息應置於' '中 ...
酷狗網址:https://www.kugou.com/yy/rank/home/1-8888.html?from=rank
環境:eclipse+pydev
1 import requests 2 from bs4 import BeautifulSoup 3 import time 4 5 headers ={ 6 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360EE' 7 } #加入請求頭,偽裝成瀏覽器,以便更好抓取數據 8 9 def get_info(url): #定義獲取信息的函數 10 wb_data = requests.get(url,headers = headers) 11 soup = BeautifulSoup(wb_data.text,'lxml') 12 ranks = soup.select('span.pc_temp_num') #selet()方法見下麵圖示 13 titles = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a') 14 times = soup.select('span.pc_temp_tips_r > span') 15 for rank,title,time in zip(ranks,titles,times): 16 data = { 17 'rank':rank.get_text().strip(), #歌曲序號 18 'singer':title.get_text().split('-')[0], #歌手名稱 19 'song':title.get_text().split('-')[1], #歌曲名稱 20 'time':time.get_text().strip() #歌曲時長 21 } 22 print (data) 23 24 if __name__ == '__main__': #程式主入口 25 urls = ['https://www.kugou.com/yy/rank/home/{}-8888.html?from=rank'.format(str(i)) for i in range(1,24)] #構建多頁url,500條結果需23組,每頁網頁22條 26 for url in urls: 27 get_info(url) 28 time.sleep(1) #暫停程式,避免因提交網頁請求頻率過快而導致程式異常終止
請求頭獲取方式:打開chrome瀏覽器,輸入chrome://version,添加時加上‘User-Agent’:即可(獲得信息應置於' '中)。
select()使用方法:該方法類似於中國>廣東省>惠州市,從大到小,提取信息,可通過chrome複製得到,如圖示:
註意:將li:nth-of-child(1)改為li
運行結果: