爬蟲定義
網路爬蟲(又被稱為網頁蜘蛛,網路機械人)就是模擬瀏覽器傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式。爬蟲的分類爬蟲就是模擬瀏覽器的行為,越像越好,越像就越不容易被發現。
原則上,只要是瀏覽器(客戶端)能做的事情,爬蟲都能夠做。
通用爬蟲:通常指搜尋引擎的爬蟲
爬蟲的用途
爬蟲的流程
向起始url傳送請求,並獲取響應
對響應進行提取
如果提取url,則繼續傳送請求獲取響應
如果提取資料,則將資料進行儲存
robots 協議
向起始 url 傳送請求,並獲取響應
對響應進行提取
如果提取 url,則繼續傳送請求獲取響應
如果提取資料,則將資料進行儲存
http 請求流程
瀏覽器通過網域名稱解析伺服器(dns)獲取ip位址
瀏覽器先向 ip 發起請求,並獲取相應
瀏覽器每獲取乙個響應就對展示出的結果進行新增(載入),js,css 等內容會修改頁面的內容,js也可以重新傳送請求,獲取響應
從獲取第乙個響應並在瀏覽器中展示,直到最終獲取全部響應,並在展示的結果中新增內容或修改————這個過程叫做瀏覽器的渲染
五層網路模型
http協議結構圖
網路模型對應關係
http、rtsp、ftp -------> 應用層
tcp、udp -------> 傳輸層
ip -------> 網路層
資料鏈路 -------> 資料鏈路層
物理介質 -------> 物理層
url 位址格式
格式說明: scheme://host[:port]/path/…/[?query-string][#anchor]scheme:協議(例如:http, https, ftp)
port:伺服器的埠(如果是走協議預設埠,預設埠80)
path:訪問資源的路徑
query-string:引數,傳送給 http 伺服器的資料
anchor:錨(跳轉到網頁的指定錨點位置)
http 請求
根據 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
cookie
user-agent
瀏覽器名稱
referer
頁面跳轉處
host
主機和埠號
connection
鏈結型別
upgrade-insecure-requests
公升級為 https 請求
accept
傳輸檔案型別
accept-encoding
檔案編譯碼格式
ajax 請求
http 響應
http響應也由四個部分組成,分別是:狀態行、訊息報頭、空行(回車符 + 換行符)和響應正文。響應頭
作用location
這個頭配合 302 狀態碼使用,告訴使用者端找誰。
set-cookie
設定和頁面關聯的 cookie
content-type
伺服器通過這個頭,回送資料的型別
server
伺服器通過這個頭,告訴瀏覽器伺服器的型別
content-length
伺服器通過這個頭,告訴瀏覽器回送資料的長度
connection
伺服器通過這個頭,響應完是保持鏈結還是關閉鏈結
當瀏覽者訪問乙個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回乙個包含 http 狀態碼的資訊頭(server header)用以響應瀏覽器的請求。分類http 狀態碼的英文為 http status code。
http 狀態碼由三個十進位制數字組成,第乙個十進位制數字定義了狀態碼的型別,後兩個數字沒有分類的作用。http 狀態碼共分為 5 種型別
分類描述
1**資訊,伺服器收到請求,需要請求者繼續執行操作
2**成功,操作被成功接收並處理
3**重定向,需要進一步的操作以完成請求
4**客戶端錯誤,請求包含語法錯誤或無法完成請求
5**伺服器錯誤,伺服器在處理請求的過程中發生了錯誤
在傳輸過程中對資料進行加密,防止中間路由器、交換機等中間的路由裝置對資料進行篡改。
http 因為不需要對資料進行加密所以效能更高,但是安全性差。(完)https 雖然安全性高,但是因為瀏覽器和伺服器端需要對資料進行加解密,所以占用伺服器資源。
樹的預備知識
0.1 本文總結於 資料結構與演算法分析,旨在整理出 樹的相關術語和概念 哥子始終記不住樹的高度和深度,記著記著就混淆了,哎,所以分享出來 1.1 定義樹的一種自然方式是遞迴的方法 1.2 樹定義 一棵樹是一些節點的集合,這個集合可以是空集 若非空,則一棵樹由稱作 根 root 的節點r 以及0個或...
關於Linux的預備知識
最高許可權賬戶為 root,可以操作一切!在linux領域內大多用在伺服器上,很少遇到關機的操作。畢竟伺服器上跑乙個服務是永無止境的,除非特殊情況下,不得已才會關機。關機指令為 shutdown sync 將資料由記憶體同步到硬碟中。shutdown 關機指令,你可以man shutdown 來看一...
Python Django學習的預備知識
http協議就是客戶端和伺服器端之間資料傳輸的格式規範,格式簡稱為 超文字傳輸協議 基於 tcp ip http是乙個屬於應用層的物件導向的協議。http協議工作於客戶端 服務端架構上。基於請求 響應模式 瀏覽器作為http客戶端通過url向http服務端即web伺服器傳送所有請求。web伺服器根據...