python3 實(shí)現(xiàn)爬取TOP500的音樂(lè)信息并存儲(chǔ)到mongoDB數(shù)據(jù)庫(kù)中
爬取TOP500的音樂(lè)信息,包括排名情況、歌曲名、歌曲時(shí)間。
網(wǎng)頁(yè)版酷狗不能手動(dòng)翻頁(yè)進(jìn)行下一步的瀏覽,仔細(xì)觀察第一頁(yè)的URL:
http://www.kugou.com/yy/rank/home/1-8888.html
這里嘗試將1改為2,再進(jìn)行瀏覽,恰好是第二頁(yè)的信息,再改為3,恰好是第三頁(yè)的信息,多次嘗試發(fā)現(xiàn)不同的數(shù)字即為不同的頁(yè)面。因此只需更改home/后面的數(shù)字即可。由于每頁(yè)顯示的為22首歌曲,所以總共需要23個(gè)URL。
import requests
from bs4 import BeautifulSoup
from time import sleep
import pymongo
#連接數(shù)據(jù)庫(kù)
client = pymongo.MongoClient(‘localhost',27017)
mydb = client[‘yourdb']
#創(chuàng)建數(shù)據(jù)庫(kù)
musicTop = mydb[‘musicTop']
#使用header是用于偽裝為瀏覽器,讓爬蟲(chóng)更穩(wěn)定
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'
}
#定義獲取信息的函數(shù)
def get_info(url):
wd_data = requests.get(url,headers=Headers)
soup = BeautifulSoup(wd_data.text,‘lxml')
#獲取排名情況
ranks = soup.select(‘span.pc_temp_num')
#獲取標(biāo)題
titles = soup.select(‘div.pc_temp_songlist > ul > li > a')
#獲取時(shí)間
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) #存入數(shù)據(jù)庫(kù)中
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)
運(yùn)行后,爬取的數(shù)據(jù)在mongoDB數(shù)據(jù)庫(kù)中顯示如下:

以上這篇python3 實(shí)現(xiàn)爬取TOP500的音樂(lè)信息并存儲(chǔ)到mongoDB數(shù)據(jù)庫(kù)中就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django對(duì)models里的objects的使用詳解
今天小編就為大家分享一篇Django對(duì)models里的objects的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
如何用Anaconda搭建虛擬環(huán)境并創(chuàng)建Django項(xiàng)目
在本篇文章里小編給大家整理了關(guān)于如何用Anaconda搭建虛擬環(huán)境并創(chuàng)建Django項(xiàng)目的相關(guān)文章,需要的朋友們可以跟著學(xué)習(xí)下。2020-08-08
Pytorch中torch.unsqueeze()與torch.squeeze()函數(shù)詳細(xì)解析
torch.squeeze()這個(gè)函數(shù)主要對(duì)數(shù)據(jù)的維度進(jìn)行壓縮,去掉維數(shù)為1的的維度,下面這篇文章主要給大家介紹了關(guān)于Pytorch中torch.unsqueeze()與torch.squeeze()函數(shù)詳細(xì)的相關(guān)資料,需要的朋友可以參考下2023-02-02
Python接口測(cè)試數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)原理
這篇文章主要介紹了Python接口測(cè)試數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Python中設(shè)置變量訪問(wèn)權(quán)限的方法
這篇文章主要介紹了Python中設(shè)置變量訪問(wèn)權(quán)限的方法,是Python學(xué)習(xí)當(dāng)中的重要知識(shí)點(diǎn),需要的朋友可以參考下2015-04-04
Python的面向?qū)ο缶幊谭绞綄W(xué)習(xí)筆記
Python深度具備面向?qū)ο缶幊陶Z(yǔ)言所應(yīng)有的特性,這里我們以類和方法為主,來(lái)整理一下Python的面向?qū)ο缶幊谭绞綄W(xué)習(xí)筆記:2016-07-07

