我們可以把互聯(lián)網(wǎng)比作一張大網(wǎng),而爬蟲(網(wǎng)絡爬蟲)就是在網(wǎng)上爬行的蜘蛛。網(wǎng)絡的節(jié)點被比作一個網(wǎng)頁,當爬蟲爬到它的時候,相當于訪問了這個網(wǎng)頁,獲得了它的信息。節(jié)點之間的鏈接可以比作網(wǎng)頁之間的鏈接,這樣蜘蛛經過一個節(jié)點后,就可以沿著節(jié)點鏈接繼續(xù)爬行,到達下一個節(jié)點,也就是通過一個網(wǎng)頁繼續(xù)獲取后續(xù)的網(wǎng)頁,這樣整個網(wǎng)絡的節(jié)點就可以被蜘蛛全部爬行到,網(wǎng)站的數(shù)據(jù)就可以被爬行下來。
簡單來說,爬蟲就是獲取網(wǎng)頁并提取和保存信息的自動化程序。
1.獲取網(wǎng)頁
爬蟲首先要做的工作就是獲取網(wǎng)頁,就是獲取網(wǎng)頁的源代碼。源代碼李包含了網(wǎng)頁的部分有用信息,所以只要把源代碼獲取下來,就可以從中提取到想要的信息了。
爬蟲通過請求和響應來獲取網(wǎng)頁,向網(wǎng)站的服務器發(fā)送一個請求,返回的響應體便是網(wǎng)頁源代碼。所以,最關鍵的部分就是構造一個請求并發(fā)送給服務器,然后接受到響應并將其解析出來。
2.提取信息獲取網(wǎng)頁源代碼后,接下來就是分析網(wǎng)頁源代碼,從中提取我們想要的數(shù)據(jù)。
由于網(wǎng)頁的結構由一定的規(guī)則,所以可以根據(jù)一些網(wǎng)頁節(jié)點屬性、CSS選擇器或XPath來提取網(wǎng)頁信息的庫。
提取信息是爬蟲非常重要的部分,它可以使雜亂的數(shù)據(jù)變得條理清晰,以便我們后續(xù)處理和分析。
3.保存數(shù)據(jù)提取信息后,我們一般會將提取到的數(shù)據(jù)保存到一些地方以便后續(xù)使用。這里保存形式多樣,可以簡單保存為TXT文本或JSON文本,也可以保存到數(shù)據(jù)庫,如Mysql,還可以保存到遠程服務器。
爬蟲可以“爬”到怎樣的數(shù)據(jù)
在網(wǎng)頁中我們能看到各種各樣的信息,最常見的便是常規(guī)網(wǎng)頁,它們對應著HTML代碼,而最常抓取的便是HTML源代碼。另外,可能有些網(wǎng)頁返回的數(shù)據(jù)不是HTML代碼,而是一個JSON字符串(其中API接口大多采用這樣的格式),這種格式的數(shù)據(jù)方便傳輸和解析,它們同樣可以抓取,而且數(shù)據(jù)提取更加方便。
?