python网络爬虫系列(0)——爬虫概述 http协议复习
一、爬蟲概述
知識點:
-
了解 爬蟲的概念
-
了解 爬蟲的作用
-
了解 爬蟲的分類
-
掌握 爬蟲的流程
1. 爬蟲的概念
模擬瀏覽器,發送請求,獲取響應
網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人)就是模擬客戶端(主要指瀏覽器)發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取互聯網信息的程序。
- 原則上,只要是客戶端(瀏覽器)能做的事情,爬蟲都能夠做
- 爬蟲也只能獲取客戶端(瀏覽器)所展示出來的數據
知識點:了解 爬蟲的概念
2. 爬蟲的作用
爬蟲在互聯網世界中有很多的作用,比如:
數據采集
軟件測試
12306搶票
網站上的投票
網絡安全
短信轟炸
web漏洞掃描
知識點:了解 爬蟲的作用
3. 爬蟲的分類
3.1 根據被爬取網站的數量不同,可以分為:
- 通用爬蟲,如 搜索引擎
- 聚焦爬蟲,如12306搶票,或專門抓取某一個(某一類)網站數據
3.2 根據是否以獲取數據為目的,可以分為:
- 功能性爬蟲,給你喜歡的明星投票、點贊
- 數據增量爬蟲,比如招聘信息
3.3 根據url地址和對應的頁面內容是否改變,數據增量爬蟲可以分為:
-
基于url地址變化、內容也隨之變化的數據增量爬蟲
-
url地址不變、內容變化的數據增量爬蟲
知識點:了解 爬蟲的分類
4. 爬蟲的流程
爬蟲的基本流程如圖所示
知識點:掌握 爬蟲的流程
向url發送請求,并獲取響應(需要http協議)
3. 如果從響應中提取url,則繼續發送請求獲取響應
4. 如果從響應中提取數據,則將數據進行保存
知識點:掌握 爬蟲的流程
二、http協議復習
知識點
-
掌握 http以及https的概念和默認端口
-
掌握 爬蟲關注的請求頭和響應頭
-
了解 常見的響應狀態碼
-
理解 瀏覽器和爬蟲爬取的區別
一提起http協議,大家都會想起它是一個應用層協議,那么http協議跟爬蟲有什么關系呢?請看下圖:
1. http以及https的概念和區別
HTTPS比HTTP更安全,但是性能更低
- HTTP:超文本傳輸協議,默認端口號是80
- 超文本:是指超過文本,不僅限于文本;還包括圖片、音頻、視頻等文件
- 傳輸協議:是指使用共用約定的固定格式來傳遞轉換成字符串的超文本內容
- HTTPS:HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協,默認端口號:443
- SSL對傳輸的內容(超文本,也就是請求體或響應體)進行加密
- 可以打開瀏覽器訪問一個url,右鍵檢查,點擊net work,點選一個url,查看http協議的形式
知識點:掌握 http以及https的概念和默認端口
2. 爬蟲特別關注的請求頭和響應頭
2.1 特別關注的請求頭字段
http請求的形式如上圖所示,爬蟲特別關注以下幾個請求頭字段
- Content-Type
- Host (主機和端口號)
- Connection (鏈接類型)
- Upgrade-Insecure-Requests (升級為HTTPS請求)
- User-Agent (瀏覽器名稱)
- Referer (頁面跳轉處)
- Cookie (Cookie)
- Authorization(用于表示HTTP協議中需要認證資源的認證信息,如前邊web課程中用于jwt認證)
加粗的請求頭為常用請求頭,在服務器被用來進行爬蟲識別的頻率最高,相較于其余的請求頭更為重要,但是這里需要注意的是并不意味這其余的不重要,因為有的網站的運維或者開發人員可能劍走偏鋒,會使用一些比較不常見的請求頭來進行爬蟲的甄別
2.2 特別關注的響應頭字段
http響應的形式如上圖所示,爬蟲只關注一個響應頭字段
- Set-Cookie (對方服務器設置cookie到用戶瀏覽器的緩存)
知識點:掌握 爬蟲關注的請求頭和響應頭
3. 常見的響應狀態碼
- 200:成功
- 302:跳轉,新的url在響應的Location頭中給出
- 303:瀏覽器對于POST的響應進行重定向至新的url
- 307:瀏覽器對于GET的響應重定向至新的url
- 403:資源不可用;服務器理解客戶的請求,但拒絕處理它(沒有權限)
- 404:找不到該頁面
- 500:服務器內部錯誤
- 503:服務器由于維護或者負載過重未能應答,在響應中可能可能會攜帶Retry-After響應頭;有可能是因為爬蟲頻繁訪問url,使服務器忽視爬蟲的請求,最終返回503響應狀態碼
我們在學習web知識的時候就已經學過了狀態碼的相關知識,我們知道這是服務器給我的相關反饋,我們在學習的時候就被教育說應該將真實情況反饋給客戶端,但是在爬蟲中,可能該站點的開發人員或者運維人員為了阻止數據被爬蟲輕易獲取,可能在狀態碼上做手腳,也就是說返回的狀態碼并不一定就是真實情況,比如:服務器已經識別出你是爬蟲,但是為了讓你疏忽大意,所以照樣返回狀態碼200,但是響應體重并沒有數據。
所有的狀態碼都不可信,一切以是否從抓包得到的響應中獲取到數據為準
知識點:了解 常見的響應狀態碼
4. 瀏覽器的運行過程
在回顧完http協議后,我們來了解以下瀏覽器發送http請求的過程
4.1 http請求的過程
4.2 注意:
但是在爬蟲中,爬蟲只會請求url地址,對應的拿到url地址對應的響應(該響應的內容可以是html,css,js,圖片等)
瀏覽器渲染出來的頁面和爬蟲請求的頁面很多時候并不一樣,是因為爬蟲不具備渲染的能力(當然后續課程中我們會借助其它工具或包來幫助爬蟲對響應內容進行渲染)
- 瀏覽器最終展示的結果是由多個url地址分別發送的多次請求對應的多次響應共同渲染的結果
- 所以在爬蟲中,需要以發送請求的一個url地址對應的響應為準來進行數據的提取
知識點:理解 瀏覽器展示的結果可以由多次請求對應的多次響應共同渲染出來,而爬蟲是一次請求對應一個響應
5. 關于http協議的其它參考閱讀
- https://blog.csdn.net/qq_33301113/article/category/6943422/2
- https://www.xuebuyuan.com/3252125.html
- https://baike.baidu.com/item/http/243074?fr=aladdin
- https://www.jianshu.com/p/cc1fea7810b2
- https://blog.csdn.net/qq_30553235/article/details/79282113
- https://segmentfault.com/q/1010000002403462
- https://blog.csdn.net/qq_30553235/article/details/79282113
- https://segmentfault.com/q/1010000002403462
總結
以上是生活随笔為你收集整理的python网络爬虫系列(0)——爬虫概述 http协议复习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Express Cookie 的基本使用
- 下一篇: python将数组写入文件_python