早期的網(wǎng)站都是靜態(tài)頁面,有些靜態(tài)頁面非常容易抓取。新手可以試試。爬行動物如何抓取靜態(tài)網(wǎng)頁?讓我們一起了解一下。
在實(shí)際工作中,不可避免地要滿足從網(wǎng)頁上抓取數(shù)據(jù)信息的需求,比如從官網(wǎng)上抓取最新的系統(tǒng)版本。顯然,這是網(wǎng)絡(luò)爬蟲的工作。所謂網(wǎng)絡(luò)爬蟲,就是需要模擬一個(gè)瀏覽器,向網(wǎng)絡(luò)服務(wù)器發(fā)送一個(gè)請求,以便從網(wǎng)絡(luò)流中讀取網(wǎng)絡(luò)資源,保存在本地,對這些信息做一些簡單的提取,將我們想要的信息進(jìn)行分離提取。
用ip模擬器替代IP軟件的工程師表示,在做網(wǎng)絡(luò)爬蟲工作時(shí),會發(fā)現(xiàn)并不是所有的網(wǎng)站都是一樣的,比如有的網(wǎng)站是靜態(tài)頁面,有的需要登錄才能獲取關(guān)鍵信息。此外,python簡單而強(qiáng)大,并且有許多第三方庫使我們可以輕松地在瀏覽器中獲得所看到的內(nèi)容。
例如,美麗的圖書館可以很容易地找到我們需要的信息。當(dāng)然,有時(shí)正則表達(dá)式可以幫助我們更快地從網(wǎng)頁中提取我們需要的信息。
首先,我們導(dǎo)入我們需要的請求和bs4模塊,然后向目標(biāo)url發(fā)送get請求以獲取主頁的html文檔。具體如下:
導(dǎo)入請求
來自bs4導(dǎo)入美麗組
標(biāo)題= { 0
用戶代理“:”Mozilla/5.0(Windows NT 10.0;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/65 . 0 . 3325 . 146 Safari/537.36’
}
網(wǎng)址= ' https://voice.hupu.com/nba' #虎撲NBA新聞。
res = requests.get(url,headers = headers)
我們的目的是提取新聞的標(biāo)題和來源,所以下一步是分析新聞主頁的DOM結(jié)構(gòu)。給新聞主頁截圖如下:
紅線是我們想要抓取的信息。通過chrome控制臺分析DOM結(jié)構(gòu)。結(jié)果如下:
從特殊到一般的思路搜索,分析一條新聞信息,找出所有新聞的共性。通過分析發(fā)現(xiàn),我們需要的標(biāo)題信息是一個(gè)A標(biāo)簽對應(yīng)的內(nèi)容,然后需要向上搜索。可以看到,標(biāo)題信息的上層是h4標(biāo)簽,h4標(biāo)簽的上層是類屬性值為list-hd的div標(biāo)簽,這個(gè)div的上層是li標(biāo)簽。通過同樣的方式分析源信息,我們發(fā)現(xiàn)新聞標(biāo)題信息和新聞源信息都在一個(gè)li標(biāo)簽下。此外,我們可以發(fā)現(xiàn)其他新聞信息都在這種li標(biāo)簽下,這些li標(biāo)簽都在類屬性值為news-list的div標(biāo)簽下,整個(gè)文檔中只有一個(gè)類屬性值為news-list的div標(biāo)簽。
因此,我們可以從這個(gè)div開始,找到這個(gè)標(biāo)簽下的每個(gè)li標(biāo)簽,并遍歷每個(gè)li標(biāo)簽。每個(gè)li標(biāo)簽下都有一個(gè)唯一的h4標(biāo)簽,這個(gè)標(biāo)簽的文本就是我們要找的標(biāo)題信息。此外,在每個(gè)li標(biāo)簽下,只有一個(gè)span標(biāo)簽,其類屬性值為comeFrom,span標(biāo)簽下的a標(biāo)簽對應(yīng)的文本就是源信息。經(jīng)過分析,我們可以通過bs4提取信息。