大數(shù)據(jù)中如何爬取一個(gè)網(wǎng)站的信息,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)江夏,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
假如我們要爬這個(gè)網(wǎng)站:http://stuu.scnu.edu.cn/articles 的摘要和圖片。
首先引入庫:
from bs4 import BeautifulSoup
import requests
這兩個(gè)庫是爬蟲工具,文章底部有安裝方法。
然后定義url為我們需要爬蟲的網(wǎng)址,并且用requests.get()得到這個(gè)網(wǎng)址的內(nèi)容存放在wb_data中。
url = "http://stuu.scnu.edu.cn/articles"
wb_data = requests.get(url)
對這些內(nèi)容進(jìn)行解析,這里要用到lxml,也是一種庫。
soup = BeautifulSoup(wb_data.text,'lxml')
我們先隨便找一欄:
然后對網(wǎng)頁使用開發(fā)者工具提取我們想要的信息。還記得左上角這個(gè)鼠標(biāo)+框框的圖案(圖中變藍(lán)了)嗎?點(diǎn)擊它,然后點(diǎn)擊標(biāo)題。
右邊會自動跳轉(zhuǎn)到它的代碼:
選擇它的上一級,也就是上一個(gè)小三角形。如圖:
右鍵-Copy-Copy selector,會得到下面這個(gè):
#main-wrap-left > div.bloglist-container.clr > article:nth-child(5) > div.home-blog-entry-text.clr
把'#'號到'>'號的部分去掉,再把:nth-child(5)去掉,這個(gè)指的是第五個(gè)標(biāo)簽,如果不去掉的話你只會得到第五個(gè)標(biāo)簽的內(nèi)容。
得到:div.bloglist-container.clr > article > div.home-blog-entry-text.clr
如果你對圖片、摘要,分別做同樣的事情,你會得到
圖片:div.bloglist-container.clr > article> a > div > img
摘要:div.bloglist-container.clr > article > div.home-blog-entry-text.clr > p
然后定義一個(gè) :變量=soup.select("你剛剛得到的內(nèi)容")
titles = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr")
texts = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr > p")
imgs = soup.select("div.bloglist-container.clr > article > a > div > img")
這里是把這些內(nèi)容提取出來
再把他們放到字典里(title,text,img都是新變量):
for title,text,img in zip(titles,texts,imgs):
data = {
"標(biāo)題":title.get_text(),
"摘要":text.get_text(),
"圖片":img.get('src')
}
然后print(data),你會得到下面的信息,這樣我們就提取完畢了。(點(diǎn)擊查看大圖)
完整代碼:
from bs4 import BeautifulSoup
import requests
url = "http://stuu.scnu.edu.cn/articles"
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
titles = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr")
texts = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr > p")
imgs = soup.select("div.bloglist-container.clr > article > a > div > img")
for title,text,img in zip(titles,texts,imgs):
data = {
"標(biāo)題":title.get_text(),
"摘要":text.get_text(),
"圖片":img.get('src')
}
print(data)
如果你不止想得到僅僅這十個(gè)信息,那么你可以構(gòu)造函數(shù)。
我們注意到第二頁的域名是:http://stuu.scnu.edu.cn/articles?paged=2
這是個(gè)重點(diǎn),我們可以把2換成別的數(shù)字:
url = "http://stuu.scnu.edu.cn/articles?paged="
然后再把剛剛的內(nèi)容變成一個(gè)函數(shù):
def get_page(url):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
titles = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr")
texts = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr > p")
imgs = soup.select("div.bloglist-container.clr > article > a > div > img")
for title,text,img in zip(titles,texts,imgs):
data = {
"標(biāo)題":title.get_text(),
"摘要":text.get_text(),
"圖片":img.get('src')
}
print(data)
再添加一個(gè)能夠調(diào)整所需要的網(wǎng)頁數(shù)目,并調(diào)用get_page的函數(shù):
def getmorepage(start,end):
for i in range (start,end):
get_page(url+str(i))
最后你想要多少頁的數(shù)據(jù)?
getmorepage(1,10)
最終結(jié)果(點(diǎn)擊查看大圖):
你想要多少有多少,快速高效。
當(dāng)然我這只是拋磚引玉(還有很多用法哦)
庫的安裝方法:
首先我們需要三個(gè)庫,一個(gè)是Beautifulsoup,一個(gè)是requests,還有一個(gè)是lxml。
如果你用的是PyCharm,可以從File->Default Settings->project interpreter內(nèi)添加這兩個(gè)庫,如圖:
點(diǎn)擊右邊那個(gè)+號,輸入你想要安裝的庫即可。
Linux下安裝:
1.有PyCharm的直接按照上文操作即可
2.沒有的話請這樣操作:
sudo apt-get install Python-PackageName
packageName 就是你所需要安裝的庫的名稱。
windows下安裝:
1.首先確定你安裝了pip:
進(jìn)入命令行(運(yùn)行-CMD)輸入 pip --version
如果沒有報(bào)錯(cuò)則證明你已經(jīng)安裝,可以繼續(xù)下面的步驟。
2.如果你已經(jīng)有了PyCharm,可以像上面PyCharm部分所說的那樣操作
如果沒有的話你有兩種選擇,一是壓縮包,二是pip中打命令,這里說第二種
在命令行里輸入:
pip3 install packageName
packageName 就是你所需要安裝的庫的名稱
如果遇到權(quán)限問題,請輸入:
sudo pip install packageName
安裝成功后會提示:
Successfully installed PackageName
如果你是python 2. 那么把pip3換成pip即可。
關(guān)于大數(shù)據(jù)中如何爬取一個(gè)網(wǎng)站的信息問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。