.NET Aspire Preview 4 is now available! Here's a summary of what's new in this preview release:.NET Aspire Preview 4 現已推出!以下是此預覽版中新增內容的摘要: Podman Supp ...
爬蟲開發從0到1全知識教程完整教程(附代碼資料)主要內容講述:爬蟲概述。selenium的其它使用方法。Selenium課程概要。常見的反爬手段和解決思路。驗證碼處理。chrome瀏覽器使用方法介紹。JS的解析。Mongodb的介紹和安裝,小結。mongodb的簡單使用,小結。Mongodb的的增刪改查,小結。mongodb的聚合操作,2 mongodb的常用管道和表達式。http協議複習。Mongodb的索引操作,小結。Mongodb的許可權管理,小結。mongodb和python交互,小結。。scrapy的概念和流程,小結。scrapy的入門使用,小結。scrapy數據建模與請求,小結。scrapy模擬登陸,小結。scrapy管道的使用,小結。scrapy中間件的使用,小結。requests模塊。scrapy_redis概念作用和流程,小結。scrapy_redis原理分析並實現斷點續爬以及分散式爬蟲,小結。scrapy_splash組件的使用,小結。scrapy的日誌信息與配置,小結。scrapyd部署scrapy項目。13.Gerapy。13.Gerapy。。scrapy的crawlspider爬蟲。appium環境安裝。requests模塊1. requests模塊介紹,2. response響應對象,3. requests模塊發送請求,4. requests模塊發送post請求,5. 利用requests.session進行狀態保持。利用appium自動控制移動設備並提取數據。數據提取概述1. 響應內容的分類,2. 認識xml以及和html的區別。數據提取-jsonpath模塊1. jsonpath模塊的使用場景,2. jsonpath模塊的使用方法,3. jsonpath練習。數據提取-lxml模塊1. 瞭解 lxml模塊和xpath語法,2. 谷歌瀏覽器xpath helper插件的安裝和使用,3. xpath的節點關係,4. xpath語法-基礎節點選擇語法,5. xpath語法-節點修飾語法,6. xpath語法-其他常用節點選擇語法,7. lxml模塊的安裝與使用示例,10. lxml模塊中etree.tostring函數的使用。selenium的介紹。selenium提取數據。
全套筆記資料代碼移步: 前往gitee倉庫查看
感興趣的小伙伴可以自取哦,歡迎大家點贊轉發~
爬蟲概述
知識點:
-
瞭解 爬蟲的概念
-
瞭解 爬蟲的作用
-
瞭解 爬蟲的分類
-
掌握 爬蟲的流程
1. 爬蟲的概念
模擬瀏覽器,發送請求,獲取響應
網路爬蟲(又被稱為網頁蜘蛛,網路機器人)就是模擬客戶端(主要指瀏覽器)發送網路請求,接收請求響應,一種按照一定的規則,自動地抓取互聯網信息的程式。
- 原則上,只要是客戶端(瀏覽器)能做的事情,爬蟲都能夠做
- 爬蟲也只能獲取客戶端(瀏覽器)所展示出來的數據
知識點:瞭解 爬蟲的概念
2. 爬蟲的作用
爬蟲在互聯網世界中有很多的作用,比如:
-
[數據採集](
- [抓取微博評論](
- [抓取招聘網站的招聘信息](<
- [新浪滾動新聞](
- [百度新聞網站](
-
[軟體測試](
- [爬蟲之自動化測試](
- [蟲師](
-
[12306搶票](
-
網站上的投票
- [投票網](
-
網路安全
-
[簡訊轟炸](
- [註冊頁面1](
- [註冊頁面2](
- [註冊頁面3](
-
[web漏洞掃描](
-
知識點:瞭解 爬蟲的作用
3. 爬蟲的分類
3.1 根據被爬取網站的數量不同,可以分為:
- 通用爬蟲,如 搜索引擎
- 聚焦爬蟲,如12306搶票,或專門抓取某一個(某一類)網站數據
3.2 根據是否以獲取數據為目的,可以分為:
- 功能性爬蟲,給你喜歡的明星投票、點贊
- 數據增量爬蟲,比如招聘信息
3.3 根據url地址和對應的頁面內容是否改變,數據增量爬蟲可以分為:
-
基於url地址變化、內容也隨之變化的數據增量爬蟲
-
url地址不變、內容變化的數據增量爬蟲
知識點:瞭解 爬蟲的分類
4. 爬蟲的流程
爬蟲的基本流程如圖所示
- 獲取一個url
- 向url發送請求,並獲取響應(需要http協議)
- 如果從響應中提取url,則繼續發送請求獲取響應
- 如果從響應中提取數據,則將數據進行保存
知識點:掌握 爬蟲的流程
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請求的過程
- 瀏覽器在拿到功能變數名稱對應的ip後,先向地址欄中的url發起請求,並獲取響應
- 在返回的響應內容(html)中,會帶有css、js、圖片等url地址,以及ajax代碼,瀏覽器按照響應內容中的順序依次發送其他的請求,並獲取相應的響應
- 瀏覽器每獲取一個響應就對展示出的結果進行添加(載入),js,css等內容會修改頁面的內容,js也可以重新發送請求,獲取響應
- 從獲取第一個響應併在瀏覽器中展示,直到最終獲取全部響應,併在展示的結果中添加內容或修改————這個過程叫做瀏覽器的渲染
4.2 註意:
但是在爬蟲中,爬蟲只會請求url地址,對應的拿到url地址對應的響應(該響應的內容可以是html,css,js,圖片等)
瀏覽器渲染出來的頁面和爬蟲請求的頁面很多時候並不一樣,是因為爬蟲不具備渲染的能力(當然後續課程中我們會藉助其它工具或包來幫助爬蟲對響應內容進行渲染)
- 瀏覽器最終展示的結果是由多個url地址分別發送的多次請求對應的多次響應共同渲染的結果
- 所以在爬蟲中,需要以發送請求的一個url地址對應的響應為準來進行數據的提取