簡(jiǎn)明爬蟲(chóng)教程

準(zhǔn)備工作

python3.7
requests(負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求),lxml(負(fù)責(zé)解析響應(yīng)的數(shù)據(jù)),chrome瀏覽器(定位要抓取的元素)。

安裝requests和lxml。

進(jìn)入命令行 執(zhí)行命令 pip install requests.pip install lxml
這里的pip是python的包管理工具,可以理解為手機(jī)里的應(yīng)用市場(chǎng),你可以使用它下載安裝第三方包。
我這里是已經(jīng)安裝好了,所以顯示requirement already satisfied。


安裝第三方庫(kù)

爬取目標(biāo)

學(xué)校官網(wǎng)的通知信息的標(biāo)題(點(diǎn)擊上面標(biāo)題就可以看到了)


通知公告

先上代碼,自己手動(dòng)敲一遍,跑一下看看運(yùn)行結(jié)果

import requests
from lxml import etree


#要下載的網(wǎng)頁(yè)網(wǎng)址 
url = 'http://www16.zzu.edu.cn/msgs/vmsgisapi.dll/vmsglist?mtype=m&lan=101,102,103&tts=&tops=&pn=1'
#請(qǐng)求該網(wǎng)頁(yè),獲取返回結(jié)果
res = requests.get(url)
#將返回的結(jié)果解析成html
html = etree.HTML(res.content)
# 爬取所有標(biāo)題節(jié)點(diǎn)
titles = html.xpath('//*[@id="bok_0"]/div[7]/div/a/span/text()')#定位標(biāo)題節(jié)點(diǎn)
for title in titles:
  print(title)

這里可以看出主要是分為三步:1,確定你要請(qǐng)求網(wǎng)頁(yè)的網(wǎng)址。2、定位你需要爬取的元素。3,存儲(chǔ)或打印你爬取得數(shù)據(jù)。
比較關(guān)鍵得一點(diǎn)在于怎么定位你需要的元素,或者說(shuō)怎么將你需要的數(shù)據(jù),從一個(gè)完整的網(wǎng)頁(yè)中篩選出來(lái)(即本例中通知的標(biāo)題),在代碼中的體現(xiàn)如下,

title = html.xpath('//*[@id="bok_0"]/div[7]/div/a/span/text()')#定位標(biāo)題節(jié)點(diǎn)

這里簡(jiǎn)單提一句xpath使用來(lái)定位元素的一種方式,根據(jù)的元素的層級(jí)關(guān)系來(lái)進(jìn)行定位(網(wǎng)頁(yè)元素的結(jié)構(gòu)就是層級(jí)的)。我們只需要搞明白怎么獲取//*[@id="bok_0"]/div[7]/div/a/span/text()就行了,這里需要用到chrome瀏覽器,我們?cè)L問(wèn)該網(wǎng)址看到結(jié)果如下


通知公告

我們需要抓取的是通知的標(biāo)題信息,點(diǎn)擊右鍵->檢查


image.png

然后在標(biāo)題位置,點(diǎn)擊右鍵,復(fù)制-復(fù)制Xpath,得到xpath,//*[@id="bok_0"]/div[7]/div[19]/a/span
好像跟我們代碼中的xpath不太一樣,主要在兩個(gè)地方div[19]和text()
1,div[19]是一個(gè)確定的值,我們需要爬取的是所有的標(biāo)題,這里定位的div[19]下的那個(gè)標(biāo)題,可以簡(jiǎn)單理解為第十九個(gè)標(biāo)題。所以我們將div[19]替換為div匹配所有的標(biāo)題。
2從上圖我們可以看出,我們需要的是<span>標(biāo)簽里面的文字,而xpath只定位到了span.多加text()使其匹配到所有標(biāo)題的文本。

練習(xí)

爬取練習(xí)網(wǎng)頁(yè)的新聞標(biāo)題

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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