【爬蟲開發】爬蟲從0到1全知識md筆記第1篇:爬蟲概述【附代碼文檔】

来源:https://www.cnblogs.com/yinuo112/p/18073799
-Advertisement-
Play Games

.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. 爬蟲的作用

爬蟲在互聯網世界中有很多的作用,比如:

  1. [數據採集](

    1. [抓取微博評論](
    2. [抓取招聘網站的招聘信息](<
    3. [新浪滾動新聞](
    4. [百度新聞網站](
  2. [軟體測試](

    1. [爬蟲之自動化測試](
    2. [蟲師](
  3. [12306搶票](

  4. 網站上的投票

    1. [投票網](
  5. 網路安全

    1. [簡訊轟炸](

      1. [註冊頁面1](
      2. [註冊頁面2](
      3. [註冊頁面3](
    2. [web漏洞掃描](


知識點:瞭解 爬蟲的作用

3. 爬蟲的分類

3.1 根據被爬取網站的數量不同,可以分為:

  • 通用爬蟲,如 搜索引擎
  • 聚焦爬蟲,如12306搶票,或專門抓取某一個(某一類)網站數據

3.2 根據是否以獲取數據為目的,可以分為:

  • 功能性爬蟲,給你喜歡的明星投票、點贊
  • 數據增量爬蟲,比如招聘信息

3.3 根據url地址和對應的頁面內容是否改變,數據增量爬蟲可以分為:

  • 基於url地址變化、內容也隨之變化的數據增量爬蟲

  • url地址不變、內容變化的數據增量爬蟲

爬蟲的分類

知識點:瞭解 爬蟲的分類

4. 爬蟲的流程

爬蟲的基本流程如圖所示

爬蟲的工作流程

  1. 獲取一個url
  2. 向url發送請求,並獲取響應(需要http協議)
  3. 如果從響應中提取url,則繼續發送請求獲取響應
  4. 如果從響應中提取數據,則將數據進行保存

知識點:掌握 爬蟲的流程

http協議複習

知識點
  • 掌握 http以及https的概念和預設埠

  • 掌握 爬蟲關註的請求頭和響應頭

  • 瞭解 常見的響應狀態碼

  • 理解 瀏覽器和爬蟲爬取的區別


一提起http協議,大家都會想起它是一個應用層協議,那麼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的請求形式

http請求的形式如上圖所示,爬蟲特別關註以下幾個請求頭欄位

  • Content-Type
  • Host (主機和埠號)
  • Connection (鏈接類型)
  • Upgrade-Insecure-Requests (升級為HTTPS請求)
  • User-Agent (瀏覽器名稱)
  • Referer (頁面跳轉處)
  • Cookie (Cookie)
  • Authorization(用於表示HTTP協議中需要認證資源的認證信息,如前邊web課程中用於jwt認證)

加粗的請求頭為常用請求頭,在伺服器被用來進行爬蟲識別的頻率最高,相較於其餘的請求頭更為重要,但是這裡需要註意的是並不意味這其餘的不重要,因為有的網站的運維或者開發人員可能劍走偏鋒,會使用一些比較不常見的請求頭來進行爬蟲的甄別

2.2 特別關註的響應頭欄位

http的響應形式

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請求的過程

http發送的過程

4.1 http請求的過程

  1. 瀏覽器在拿到功能變數名稱對應的ip後,先向地址欄中的url發起請求,並獲取響應
  2. 在返回的響應內容(html)中,會帶有css、js、圖片等url地址,以及ajax代碼,瀏覽器按照響應內容中的順序依次發送其他的請求,並獲取相應的響應
  3. 瀏覽器每獲取一個響應就對展示出的結果進行添加(載入),js,css等內容會修改頁面的內容,js也可以重新發送請求,獲取響應
  4. 從獲取第一個響應併在瀏覽器中展示,直到最終獲取全部響應,併在展示的結果中添加內容或修改————這個過程叫做瀏覽器的渲染

4.2 註意:

但是在爬蟲中,爬蟲只會請求url地址,對應的拿到url地址對應的響應(該響應的內容可以是html,css,js,圖片等)

瀏覽器渲染出來的頁面和爬蟲請求的頁面很多時候並不一樣,是因為爬蟲不具備渲染的能力(當然後續課程中我們會藉助其它工具或包來幫助爬蟲對響應內容進行渲染)

  • 瀏覽器最終展示的結果是由多個url地址分別發送的多次請求對應的多次響應共同渲染的結果
  • 所以在爬蟲中,需要以發送請求的一個url地址對應的響應為準來進行數據的提取

知識點:理解 瀏覽器展示的結果可以由多次請求對應的多次響應共同渲染出來,而爬蟲是一次請求對應一個響應

5. 關於http協議的其它參考閱讀

未完待續, 同學們請等待下一期

全套筆記資料代碼移步: 前往gitee倉庫查看

感興趣的小伙伴可以自取哦,歡迎大家點贊轉發~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Java多線程編程中,正確且安全地停止線程是一項關鍵技能。簡單粗暴地“殺死”線程不僅可能導致數據不一致性,還可能引發各種難以預測的錯誤。 ...
  • 這個作業屬於哪個課程 軟體工程2024 這個作業要求在哪裡 個人項目 這個作業的目標 瞭解軟體項目開發的整體流程,實現自己的個人項目,學習單元測試、性能優化和 git 操作,學會使用 PSP 表格 Github地址 : 點擊此處,進入我的倉庫 一、項目需求 題目:論文查重 設計一個論文查重演算法,給出 ...
  • 大家好,我是R哥。 周末愉快呀,最近我在做 Java 面試輔導,也模擬面試了好些個學員,說說其中一個學員吧,一個工作 5 年的 Java 程式員,模擬面試,居然一個問題也不會。。 當晚模擬面試完,我的心情很複雜。 我之前做系統架構師,同時也是面試官,這些年,少說也面試過幾百上千人,不乏知識淵博、技能 ...
  • .NET 6 引入了 LoggerMessageAttribute 類型。 使用時,它會以source-generators的方式生成高性能的日誌記錄 API。 source-generators可在編譯代碼時,可以提供其他源代碼作為編譯的輸入。 LoggerMessageAttribute依賴於 ...
  • 概述:ValueStopwatch是.NET中輕量級計時器,用於高性能時間測量。作為值類型,避免了裝箱拆箱開銷,記憶體占用小。通過簡單的使用方法,輕鬆實現代碼塊執行時間測量,且相比Stopwatch更為高效。 在.NET中,ValueStopwatch是一個輕量級的計時器類,用於測量代碼塊的執行時間。 ...
  • 概述:`Directory.Packages.props`和`Directory.Build.props`是.NET項目中的配置文件,分別用於統一管理NuGet包引用和自定義MSBuild構建過程。它們提高瞭解決方案的可維護性,通過集中配置,簡化了項目文件,使團隊協作更一致,同時避免了在每個項目中重 ...
  • 示例項目:https://gitee.com/easyxaf/recharge-rules-engine-sample 前言 繼上一篇文章對規則引擎編輯器進行了初步介紹之後,本文將通過實際應用案例深入探討規則引擎編輯器的使用方法。編輯器的操作相對簡單,我們將重點放在RulesEngine的講解上。請 ...
  • 這是我本人自己寫的一個開源庫,現已經發佈到nuget,可以直接在vs的nuget包管理中搜索到,或者可以到nuget官網下載:https://www.nuget.org/packages/ZmjConvert/,也可以到我的個人網站上下載源碼:https://www.zhaimaojun.cn/P/ ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...