利用python進(jìn)行爬蟲

今天,我們來(lái)學(xué)習(xí)爬蟲。什么是爬蟲呢?

簡(jiǎn)單來(lái)講,爬蟲是指使用一定的手段自動(dòng)抓取網(wǎng)頁(yè)上的內(nèi)容。它是搜索引擎的核心技術(shù)之一。

爬蟲程序是我們用來(lái)自動(dòng)抓取網(wǎng)頁(yè)內(nèi)容的手段。這里我們將講解如何利用python來(lái)編寫爬蟲程序。

要想抓取網(wǎng)頁(yè)上的內(nèi)容,首先我們要認(rèn)識(shí)網(wǎng)頁(yè)的構(gòu)成。


認(rèn)識(shí)網(wǎng)頁(yè)的構(gòu)成

網(wǎng)頁(yè)通常由三部分構(gòu)成,一個(gè)網(wǎng)頁(yè)就等于一個(gè)HTML文檔:

1. HTML:結(jié)構(gòu)部分,區(qū)分每個(gè)部分具體是做什么用的,比如標(biāo)題、正文等,相當(dāng)于臥室、廚房等

2. CSS:<div class="">,樣式部分,每個(gè)部分長(zhǎng)啥樣,地板什么顏色,墻壁什么顏色

3. JavaScript:<script>:功能部分,房間里的電器。在爬蟲中利用較少


那么,爬取一個(gè)網(wǎng)頁(yè),要做什么?

第一步:獲取網(wǎng)頁(yè)的內(nèi)容

為了獲取網(wǎng)頁(yè)的內(nèi)容,我們就需要知道服務(wù)器與本地的交換機(jī)制。

我們?cè)跒g覽器輸入一個(gè)鏈接實(shí)際上是向網(wǎng)站所在的服務(wù)器發(fā)出一個(gè)請(qǐng)求(request),服務(wù)器在收到這個(gè)請(qǐng)求后就會(huì)把相應(yīng)的內(nèi)容返回(response)給我們。


請(qǐng)求的方法主要有兩種:get和post。我們?cè)邳c(diǎn)擊一個(gè)按鈕或鏈接時(shí)使用的是get,發(fā)微博則是一個(gè)post行為。我們使用一個(gè)爬蟲去抓取網(wǎng)頁(yè)內(nèi)容就是在模擬這些方法去獲取網(wǎng)頁(yè)內(nèi)容。

我們?cè)趓equest時(shí)不僅僅是發(fā)送了url的信息,實(shí)際上包括你使用的設(shè)備等信息也發(fā)送過(guò)去了。我們平時(shí)使用手機(jī)打開網(wǎng)頁(yè)時(shí),服務(wù)器因?yàn)橹牢覀兪褂玫脑O(shè)備而以適合手機(jī)的方式呈現(xiàn)頁(yè)面就是這個(gè)原理。

服務(wù)器以response的形式返回給我們信息。爬蟲就是要解析網(wǎng)頁(yè)返回給我們的response信息(html文件)。


import requests

url="http://www.tripadvisor.cn/Attractions-g294217-Activities-Hong_Kong.html"

wb_data=requests.get(url)


第二步:使用BeautifulSoup解析網(wǎng)頁(yè)

from bs4 import BeautifulSoup

soup=BeautifulSoup(wb_data.text,'lxml')

beautifulsoup有兩個(gè)參數(shù),前面是待解析的文件,后面是解析文件的庫(kù)(按照什么規(guī)則解析)。


第三步:描述元素在網(wǎng)頁(yè)中所處位置

CSS Selector:描述元素在網(wǎng)頁(yè)中所處位置,按照元素的位置和樣式去選取元素

titles=soup.select('div.property_title > a[target="_blank"]')

imgs=soup.select("img[width=160]")

cates=soup.select("div.p13n_reasoning_v2")


第四步:從標(biāo)簽中獲取想要的信息,并將信息裝進(jìn)數(shù)據(jù)容器中,方便查詢

for title, img, cate in zip(titles,imgs,cates):

? ? data={

? ? ? ? ? ? "title":title.get_text(),

? ? ? ? ? ? "img":img.get('src'),

? ? ? ? ? ? "cate":list(cate.stripped_strings)

? ? ?}



運(yùn)行結(jié)果:


深入學(xué)習(xí):

1. 如何爬取多個(gè)網(wǎng)頁(yè)?


2.需要登錄怎么辦?


3. 如何爬取移動(dòng)設(shè)備網(wǎng)頁(yè)內(nèi)容?


參考資料:

零基礎(chǔ)python實(shí)戰(zhàn):一周學(xué)會(huì)爬蟲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容