天天看點

爬蟲必須得會的預備知識

爬蟲必須得會的預備知識

criselyj

github.com/criselyj/python-crawler-tutorial-starts-from-zero

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人)就是模拟浏覽器發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式。 爬蟲就是模拟浏覽器的行為,越像越好,越像就越不容易被發現。 原則上,隻要是浏覽器(用戶端)能做的事情,爬蟲都能夠做。

通用爬蟲:通常指搜尋引擎的爬蟲

聚焦爬蟲:針對特定網站的爬蟲

今日頭條

網易雲音樂

12306搶票

網站自動投票

短信轟炸

等等

爬蟲必須得會的預備知識

向起始url發送請求,并擷取響應

對響應進行提取

如果提取url,則繼續發送請求擷取響應

如果提取資料,則将資料進行儲存

robots 協定:網站通過 robots 協定告訴搜尋引擎哪些頁面可以抓取,哪些頁面不能抓取,但它僅僅是道德層面上的限制 例如:淘寶的 robots 協定

爬蟲概念:模拟浏覽器發送網絡請求,接收請求響應。隻要是浏覽器(用戶端)能做的事情,爬蟲都能夠做。

爬蟲的分類:聚焦爬蟲、通用爬蟲

爬蟲的流程:

向起始 url 發送請求,并擷取響應

如果提取 url,則繼續發送請求擷取響應

概念:http(超文本傳輸協定)是應用層上的一種用戶端/服務端模型的通信協定,它由請求和響應構成,且是無狀态的。 協定:協定規定了通信雙方必須遵守的資料傳輸格式,這樣通信雙方按照約定的格式才能準确的通信。 無狀态:無狀态是指兩次諒解通信之間是沒有任何聯系的,每次都是一個新的連接配接,服務端不會記錄前後的請求資訊。
爬蟲必須得會的預備知識

浏覽器通過域名解析伺服器(dns)擷取ip位址

浏覽器先向 ip 發起請求,并擷取相應

在傳回的響應内容(html)中,會帶有 css、js、圖檔等 url 位址,以及 ajax 代碼,浏覽器按照響應内容中的順序依次發送其他的請求,并擷取相應的響應

浏覽器每擷取一個響應就對展示出的結果進行添加(加載),js,css 等内容會修改頁面的内容,js也可以重新發送請求,擷取響應

從擷取第一個響應并在浏覽器中展示,直到最終擷取全部響應,并在展示的結果中添加内容或修改————這個過程叫做浏覽器的渲染

爬蟲必須得會的預備知識
爬蟲必須得會的預備知識

http、rtsp、ftp -------> 應用層

tcp、udp -------> 傳輸層

ip -------> 網絡層

資料鍊路 -------> 資料鍊路層

實體媒體 -------> 實體層

爬蟲必須得會的預備知識
格式說明: scheme://host[:port]/path/…/[?query-string][#anchor]

scheme:協定(例如:http, https, ftp)

host:伺服器的 ip 位址或者域名

port:伺服器的端口(如果是走協定預設端口,預設端口80)

path:通路資源的路徑

query-string:參數,發送給 http 伺服器的資料

anchor:錨(跳轉到網頁的指定錨點位置)

請求格式

爬蟲必須得會的預備知識

案例

爬蟲必須得會的預備知識

請求方式

根據 http 标準,http 請求可以使用多種請求方法。 http1.0 定義了三種請求方法: get, post 和 head 方法。 http1.1 新增了五種請求方法:options, put, delete, trace 和 connect 方法。

描述

get

請求指定的頁面資訊,并傳回實體主體。

head

類似于 get 請求,隻不過傳回的響應中沒有具體的内容,用于擷取報頭

post

向指定資源送出資料進行處理請求(例如送出表單或者上傳檔案)。資料被包含在請求體中。post 請求可能會導緻新的資源的建立和/或已有資源的修改。

put

從用戶端向伺服器傳送的資料取代指定的文檔的内容

delete

請求伺服器删除指定的頁面。

connect

http/1.1 協定中預留給能夠将連接配接改為管道方式的代理伺服器。

options

允許用戶端檢視伺服器的性能。

trace

回顯伺服器收到的請求,主要用于測試或診斷。

常見請求頭

請求頭

作用

cookie

user-agent

浏覽器名稱

referer

頁面跳轉處

host

主機和端口号

connection

連結類型

upgrade-insecure-requests

更新為 https 請求

accept

傳輸檔案類型

accept-encoding

檔案編解碼格式

x-requested-with : xmlhttprequest

ajax 請求

響應格式

http響應也由四個部分組成,分别是:狀态行、消息報頭、空行(回車符 + 換行符)和響應正文。
爬蟲必須得會的預備知識

響應頭

location

這個頭配合 302 狀态碼使用,告訴使用者端找誰。

set-cookie

設定和頁面關聯的 cookie

content-type

伺服器通過這個頭,回送資料的類型

server

伺服器通過這個頭,告訴浏覽器伺服器的類型

content-length

伺服器通過這個頭,告訴浏覽器回送資料的長度

伺服器通過這個頭,響應完是保持連結還是關閉連結

http 狀态碼

當浏覽者通路一個網頁時,浏覽者的浏覽器會向網頁所在伺服器送出請求。當浏覽器接收并顯示網頁前,此網頁所在的伺服器會傳回一個包含 http 狀态碼的資訊頭(server header)用以響應浏覽器的請求。 http 狀态碼的英文為 http status code。 http 狀态碼由三個十進制數字組成,第一個十進制數字定義了狀态碼的類型,後兩個數字沒有分類的作用。http 狀态碼共分為 5 種類型

分類

分類描述

1**

資訊,伺服器收到請求,需要請求者繼續執行操作

2**

成功,操作被成功接收并處理

3**

重定向,需要進一步的操作以完成請求

4**

用戶端錯誤,請求包含文法錯誤或無法完成請求

5**

伺服器錯誤,伺服器在處理請求的過程中發生了錯誤

常見的 http 狀态碼:

200 - 請求成功

301 - 資源(網頁等)被永久轉移到其它 url

404 - 請求的資源(網頁等)不存在

500 - 内部伺服器錯誤

1- http + ssl (安全套接字層),即帶有安全套接字層的超本文傳輸協定

2- 預設端口号:443

https 作用

在傳輸過程中對資料進行加密,防止中間路由器、交換機等中間的路由裝置對資料進行篡改。

http 與 https 優缺點

http 因為不需要對資料進行加密是以性能更高,但是安全性差。 https 雖然安全性高,但是因為浏覽器和伺服器端需要對資料進行加解密,是以占用伺服器資源。

目前形式

注意:目前 https 是未來主流,微信小程式,ios 用戶端,android 用戶端的接口提供都需要 https 接口支援。

(完)

爬蟲必須得會的預備知識

繼續閱讀