【爬蟲開發】爬蟲從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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...