爬取TOP500的音樂信息,包括排名情況、歌曲名、歌曲時間。
網頁版酷狗不能手動翻頁進行下一步的瀏覽,仔細觀察第一頁的URL:
http://www.kugou.com/yy/rank/home/1-8888.html
這里嘗試將1改為2,再進行瀏覽,恰好是第二頁的信息,再改為3,恰好是第三頁的信息,多次嘗試發現不同的數字即為不同的頁面。因此只需更改home/后面的數字即可。由于每頁顯示的為22首歌曲,所以總共需要23個URL。
import requests from bs4 import BeautifulSoup from time import sleep import pymongo #連接數據庫 client = pymongo.MongoClient(‘localhost',27017) mydb = client[‘yourdb'] #創建數據庫 musicTop = mydb[‘musicTop'] #使用header是用于偽裝為瀏覽器,讓爬蟲更穩定 Headers = { ‘User-Agent': ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36' } #定義獲取信息的函數 def get_info(url): wd_data = requests.get(url,headers=Headers) soup = BeautifulSoup(wd_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(), ‘song':title.get_text(), ‘time':time.get_text().strip() } musicTop.insert_one(data) #存入數據庫中 if name == ‘main': urls = [‘http://www.kugou.com/yy/rank/home/{}-8888.html'.format(number) for number in range(1,24)] for url in urls: get_info(url) sleep(2)
運行后,爬取的數據在mongoDB數據庫中顯示如下:
以上這篇python3 實現爬取TOP500的音樂信息并存儲到mongoDB數據庫中就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
