鍍金池/ 教程/ Python/ 抓取網(wǎng)頁的含義和 URL 基本構(gòu)成
一個(gè)簡單的百度貼吧的小爬蟲
亮劍!爬蟲框架小抓抓 Scrapy 閃亮登場!
Opener 與 Handler 的介紹和實(shí)例應(yīng)用
百度貼吧的網(wǎng)絡(luò)爬蟲(v0.4)源碼及解析
異常的處理和 HTTP 狀態(tài)碼的分類
利用 urllib2 通過指定的 URL 抓取網(wǎng)頁內(nèi)容
Python 中的正則表達(dá)式教程
爬蟲框架 Scrapy 的第一個(gè)爬蟲示例入門教程
抓取網(wǎng)頁的含義和 URL 基本構(gòu)成
urllib2 的使用細(xì)節(jié)與抓站技巧
一個(gè)爬蟲的誕生全過程(以山東大學(xué)績點(diǎn)運(yùn)算為例)
糗事百科的網(wǎng)絡(luò)爬蟲(v0.3)源碼及解析(簡化更新)

抓取網(wǎng)頁的含義和 URL 基本構(gòu)成

網(wǎng)絡(luò)爬蟲的定義

網(wǎng)絡(luò)爬蟲,即 Web Spider,是一個(gè)很形象的名字。

把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么 Spider 就是在網(wǎng)上爬來爬去的蜘蛛。

網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁的。

從網(wǎng)站某一個(gè)頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,

然后通過這些鏈接地址尋找下一個(gè)網(wǎng)頁,這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁都抓取完為止。

如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。

這樣看來,網(wǎng)絡(luò)爬蟲就是一個(gè)爬行程序,一個(gè)抓取網(wǎng)頁的程序。 網(wǎng)絡(luò)爬蟲的基本操作是抓取網(wǎng)頁。

那么如何才能隨心所欲地獲得自己想要的頁面?

我們先從 UR L開始。

瀏覽網(wǎng)頁的過程

抓取網(wǎng)頁的過程其實(shí)和讀者平時(shí)使用IE瀏覽器瀏覽網(wǎng)頁的道理是一樣的。 比如說你在瀏覽器的地址欄中輸入 www.baidu.com 這個(gè)地址。

打開網(wǎng)頁的過程其實(shí)就是瀏覽器作為一個(gè)瀏覽的“客戶端”,向服務(wù)器端發(fā)送了 一次請求,把服務(wù)器端的文件“抓”到本地,再進(jìn)行解釋、展現(xiàn)。

HTML 是一種標(biāo)記語言,用標(biāo)簽標(biāo)記內(nèi)容并加以解析和區(qū)分。

瀏覽器的功能是將獲取到的 HTML 代碼進(jìn)行解析,然后將原始的代碼轉(zhuǎn)變成我們直接看到的網(wǎng)站頁面。

URI 和 URL 的概念和舉例

簡單的來講,URL 就是在瀏覽器端輸入的 wiki.jikexueyuan.com 這個(gè)字符串。

在理解 URL 之前,首先要理解 URI 的概念。

什么是 URI?

Web 上每種可用的資源,如 HTML 文檔、圖像、視頻片段、程序等都由一個(gè)通用資源標(biāo)志符(Universal Resource Identifier,URI)進(jìn)行定位。

URI 通常由三部分組成:

①訪問資源的命名機(jī)制;

②存放資源的主機(jī)名;

③資源自身的名稱,由路徑表示。

如下面的 URI:

http://www.why.com.cn/myhtml/html1223/

我們可以這樣解釋它:

①這是一個(gè)可以通過 HTTP 協(xié)議訪問的資源,

②位于主機(jī) www.webmonkey.com.cn 上,

③通過路徑“/html/html40”訪問。

URL 的理解和舉例

URL 是 URI 的一個(gè)子集。它是 Uniform Resource Locator 的縮寫,譯為“統(tǒng)一資源定位 符”。

通俗地說,URL 是 Internet 上描述信息資源的字符串,主要用在各種 WWW 客戶程序和服務(wù)器程序上。

采用 URL 可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務(wù)器的地址和目錄等。

URL 的一般格式為(帶方括號(hào)[]的為可選項(xiàng)):

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

URL 的格式由三部分組成:

①第一部分是協(xié)議(或稱為服務(wù)方式)。

②第二部分是存有該資源的主機(jī) IP 地址(有時(shí)也包括端口號(hào))。

③第三部分是主機(jī)資源的具體地址,如目錄和文件名等。

第一部分和第二部分用“://”符號(hào)隔開。

第二部分和第三部分用“/”符號(hào)隔開。

第一部分和第二部分是不可缺少的,第三部分有時(shí)可以省略。

URL 和 URI 簡單比較

URI 屬于 URL 更低層次的抽象,一種字符串文本標(biāo)準(zhǔn)。

換句話說,URI 屬于父類,而 URL 屬于 URI 的子類。URL 是 URI 的一個(gè)子集。

URI 的定義是:統(tǒng)一資源標(biāo)識(shí)符;

URL 的定義是:統(tǒng)一資源定位符。

二者的區(qū)別在于,URI 表示請求服務(wù)器的路徑,定義這么一個(gè)資源。

而 URL 同時(shí)說明要如何訪問這個(gè)資源(http://)。

下面來看看兩個(gè) URL 的小例子。

  1. HTTP 協(xié)議的 URL 示例:

使用超級(jí)文本傳輸協(xié)議 HTTP,提供超級(jí)文本信息服務(wù)的資源。

例:http://www.peopledaily.com.cn/channel/welcome.htm

其計(jì)算機(jī)域名為 www.peopledaily.com.cn。

超級(jí)文本文件(文件類型為.html)是在目錄 /channel 下的 welcome.htm。
這是中國人民日報(bào)的一臺(tái)計(jì)算機(jī)。

例:http://www.rol.cn.net/talk/talk1.htm
其計(jì)算機(jī)域名為 www.rol.cn.net。

超級(jí)文本文件(文件類型為.html)是在目錄 /talk 下的 talk1.htm。 這是瑞得聊天室的地址,可由此進(jìn)入瑞得聊天室的第 1 室。

  1. 文件的 URL

用 URL 表示文件時(shí),服務(wù)器方式用 file 表示,后面要有主機(jī) IP 地址、文件的存取路 徑(即目錄)和文件名等信息。

有時(shí)可以省略目錄和文件名,但“/”符號(hào)不能省略。

例:file://ftp.yoyodyne.com/pub/files/foobar.txt

上面這個(gè) URL 代表存放在主機(jī) ftp.yoyodyne.com 上的 pub/files/目錄下的一個(gè)文件,文件名是foobar.txt。

例:file://ftp.yoyodyne.com/pub

代表主機(jī) ftp.yoyodyne.com 上的目錄/pub。

例:file://ftp.yoyodyne.com/

代表主機(jī) ftp.yoyodyne.com 的根目錄。

爬蟲最主要的處理對象就是 URL,它根據(jù) URL 地址取得所需要的文件內(nèi)容,然后對它進(jìn)行進(jìn)一步的處理。

因此,準(zhǔn)確地理解 URL 對理解網(wǎng)絡(luò)爬蟲至關(guān)重要。