爬蟲的理論知識儲備

參考資料:
汪海:Python網(wǎng)絡(luò)爬蟲
W3School HTML教程
《計算機網(wǎng)絡(luò)第二版》 謝希仁

網(wǎng)絡(luò)爬蟲,是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或腳本。爬蟲通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁并獲取網(wǎng)頁內(nèi)容,再根據(jù)網(wǎng)頁中其他鏈接不斷循環(huán)爬取。

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

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

  • 使用統(tǒng)一資源定位符URL來標(biāo)志萬維網(wǎng)上的各種文檔,并使每一個文檔在整個因特網(wǎng)的范圍內(nèi)具有唯一的標(biāo)識符URL。
  • 通過超文本傳送協(xié)議HTTP來實現(xiàn)萬維網(wǎng)上各種連接,使用TCP連接進行可靠的傳送。
  • 使用超文本標(biāo)記語言HTML使得網(wǎng)頁設(shè)計者可以很方便地用鏈接從本頁面的某處鏈接到任意網(wǎng)頁,并在自己主機屏幕上顯示。

2 統(tǒng)一資源定位符URL

URL是用來表示從因特網(wǎng)上得到的資源位置和訪問這些資源的方法。URL給資源的位置提供一種抽象的識別方法,并用這種方法給資源定位。只要能夠?qū)Y源定位,系統(tǒng)就可以對資源進行各種操作,如存取、更新、替換和查找其屬性。URL相當(dāng)于一個文件名在網(wǎng)絡(luò)范圍的擴展。因此,URL是與因特網(wǎng)相連的機器上的任何可訪問對象的指針。由于訪問不同對象使用的協(xié)議不同,URL還能之處讀取某個對象時所使用的協(xié)議。URL的一般形式為:

 <協(xié)議>://<主機>:<端口>/<路徑>

協(xié)議是指用哪種協(xié)議獲取該萬維網(wǎng)文檔,如http,ftp;主機是指該網(wǎng)絡(luò)文檔所在主機的域名;端口和路徑有時可以省略。對萬維網(wǎng)的網(wǎng)點訪問使用HTTP協(xié)議,HTTP的默認(rèn)端口號是80,通??墒÷浴H粼谑÷晕募穆窂?,則URL就指到因特網(wǎng)上的某個主頁。如: www.baidu.com

3 超文本傳送協(xié)議HTTP

HTTP協(xié)議定義了瀏覽器怎樣向萬維網(wǎng)服務(wù)器請求萬維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。下圖給出了萬維網(wǎng)的大致工作過程。

萬維網(wǎng)工作過程

HTTP規(guī)定在HTTP客戶與HTTP服務(wù)器之間的每次交互,都由一個ASCII碼串構(gòu)成的請求和一個“MIME-like”的響應(yīng)組成,HTTP報文通常都使用TCP連接傳送。

HTTP有兩類報文:請求報文(從客戶向服務(wù)器發(fā)送請求報文)和響應(yīng)報文(從服務(wù)器到客戶的回答)。HTTP請求報文和響應(yīng)報文都是由三部分組成,兩種報文格式的區(qū)別就是開始行不同。

  1. 開始行 用于區(qū)分是請求報文還是響應(yīng)報文。開始行在兩種報文中分別叫請求行狀態(tài)行
  2. 首部行 用來說明瀏覽器或報文主題的一些信息。
  3. 實體主體 在請求報文中一般不用該字段,而在響應(yīng)報文中也可能沒有該字段。

請求行只有三個內(nèi)容,即方法、請求資源URL和HTTP的版本。下表給出了請求報文中常用的幾種方法。

方法 意義
GET 請求讀取URL標(biāo)志的信息
OPTION 請求一些選項的信息
HEAD 請求讀取URL標(biāo)志信息的首部
POST 給服務(wù)器添加信息,如注釋
PUT 在致命的URL下存儲一個文檔
DELETE 刪除致命的URL所標(biāo)志的資源
CONNECT 用于代理服務(wù)器
GET http://www.bilibili.com/video/douga.html  HTTP/1.1

下面是一個請求報文的例子

請求報文

4 超文本標(biāo)記語言HTML

HTML指的是超文本標(biāo)記語言,是使用標(biāo)記標(biāo)簽來描述網(wǎng)頁的。

HTML標(biāo)簽是由尖括號包圍的關(guān)鍵詞,比如<html>。HTML標(biāo)簽通常是成對出現(xiàn)的,標(biāo)簽對中的第一個標(biāo)簽是開始標(biāo)簽,第二個是結(jié)束標(biāo)簽,比如<b></b>。

HTML文檔包含HTML標(biāo)簽和純文本,也稱為網(wǎng)頁。Web 瀏覽器的作用是讀取 HTML 文檔,并以網(wǎng)頁的形式顯示出它們。瀏覽器不會顯示 HTML 標(biāo)簽,而是使用標(biāo)簽來解釋頁面的內(nèi)容。

四個基本的標(biāo)簽

  • <h1> - <h6>等:定義HTML 標(biāo)題。
  • <p>:定義HTML 段落。
  • <a>:定義HTML 鏈接。
  • <img>:定義HTML 圖像。
  • <div> :HTML分組標(biāo)簽,定義文檔中的分區(qū)或節(jié)。
<h1>This is a heading</h1>
<h2>This is a heading</h2>
<h3>This is a heading</h3>

<p>This is a paragraph.</p>
<p>This is another paragraph.</p>

<a >This is a link</a>

<img src="w3school.jpg" width="104" height="142" />

HTML 元素指的是從開始標(biāo)簽(start tag)到結(jié)束標(biāo)簽(end tag)的所有代碼。元素的內(nèi)容是開始標(biāo)簽與結(jié)束標(biāo)簽之間的內(nèi)容。大多數(shù) HTML 元素可以嵌套(可以包含其他 HTML 元素),HTML 文檔由嵌套的 HTML 元素構(gòu)成。如下例包含3個HTML元素。

<html>
    <body>
        <p>This is my first paragraph.</p>
    </body>
</html>

HTML 屬性:HTML 標(biāo)簽可以擁有屬性,屬性提供了有關(guān) HTML 元素的更多的信息,屬性總是以名稱/值對的形式出現(xiàn),比如:name="value",屬性總是在 HTML 元素的開始標(biāo)簽中規(guī)定;屬性值應(yīng)該始終被包括在引號內(nèi),雙引號是最常用的,不過使用單引號也沒有問題。

HTML 鏈接由<a>標(biāo)簽定義,鏈接的地址在 href 屬性中指定:
<a >This is a link</a>

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

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

  • 先討論許多應(yīng)用協(xié)議都要使用的域名系統(tǒng)。在介紹了文件傳送協(xié)議和遠程登錄協(xié)議后,就重點介紹萬維網(wǎng)的工作原理及其主要協(xié)議...
    dmmy大印閱讀 1,332評論 0 1
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,750評論 6 152
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計算機通信網(wǎng)絡(luò)中兩臺計算機之間進行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,801評論 2 20
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 從自身經(jīng)歷來看,對于意志力薄弱的人,一個計劃一旦開始就不要停止松懈下來,只要是一次的松懈,整個人都會變得怠懶,變得...
    自控力二靜閱讀 187評論 1 2

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