【Datawhale組隊學習202506】零基礎學爬蟲 01 初始爬蟲

系列文章目錄

01 初始爬蟲
02 數據解析與提取


文章目錄

  • 系列文章目錄
  • 前言
  • 1 爬蟲和Python
  • 2 爬蟲的矛盾
    • 2.1 爬蟲與反爬
    • 2.2 robots
      • 核心字段
      • 重要規則說明
      • 非標準擴展指令
      • 協議生效條件
      • 局限性
      • 驗證工具
    • 2.3 一個爬蟲demo
  • 3 Web請求與HTTP協議
    • 3.1 一個web請求的全過程
    • 3.2 判斷頁面源代碼位置
    • 3.3 HTTP 協議
      • HTTP 請求
      • HTTP 響應
    • 3.4 requests 模塊入門
  • 總結


前言

  • Datawhale是一個專注于AI與數據科學的開源組織,匯集了眾多領域院校和知名企業的優秀學習者,聚合了一群有開源精神和探索精神的團隊成員
  • 零基礎網絡爬蟲技術

1 爬蟲和Python

爬蟲就是通過編寫程序來爬取互聯網上的圖片、音頻、視頻、數據等。

  • Python 是一門上手快、語法簡單的編程語言。

2 爬蟲的矛盾

2.1 爬蟲與反爬

  • 首先,爬蟲在法律上不是被禁止的

  • 爬蟲分為:

    • 善意爬蟲,不破壞被爬取的網站的資源,正常訪問,一般頻率不高,不竊取用戶隱私;
    • 惡意爬蟲,影響?站的正常運營如搶票,秒殺,瘋狂請求?站資源造成?站宕機;
  • 因此網站有了反爬機制,制定相應的策略或者技術手段,防止爬蟲程序進行網站數據的爬取。

  • 爬蟲程序就有了反反爬策略,制定相關的策略或者技術手段,破解網站中具備的反爬機制。

  • 最后,雙方制定君子協議: robots 協議

  • 根據協議,網站管理員可以在網站域名的根目錄下放一個 robots.txt 的文本文件,里面可以指定不同的網絡爬蟲能訪問的頁面和禁止訪問的頁面。網絡爬蟲在采集這個網站之前,首先獲取到這個文件,然后解析到其中的規則,最后根據規則來采集網站的數據。

2.2 robots

  • robots.txt 文件由一組規則組成,每組規則以 User-agent 開頭,后接允許或禁止的路徑規則。

核心字段

  • User-agent :指定規則適用的爬蟲名稱(如 * 表示所有爬蟲)。
  • Disallow :指定禁止爬蟲訪問的路徑(路徑需為絕對路徑)。
  • Allow :指定允許爬蟲訪問的路徑(某些搜索引擎支持,但非標準協議的一部分)。
  • Sitemap :告知爬蟲網站的XML站點地圖位置(幫助索引內容)。

重要規則說明

  • 路徑匹配
    • 使用前綴匹配(如 Disallow: /admin 會禁止 /admin//admin.php 等)。
    • 支持通配符(如 * 匹配任意字符,$ 匹配路徑結尾,但需搜索引擎支持)。
  • 大小寫敏感 :路徑區分大小寫(如 /Images//images/ 是不同的)。
  • 優先級Allow 規則通常優先于 Disallow(若同時存在沖突規則)。
  • 最長匹配原則 :當多條規則沖突時,選擇最長匹配的路徑規則。

非標準擴展指令

部分搜索引擎支持額外指令(非協議官方標準):

  • Crawl-Delay :設置爬蟲抓取間隔(如 Crawl-Delay: 10 表示每10秒請求一次)。
  • Host :指定首選域名(如 Host: www.example.com)。
  • Clean-param :聲明某些參數不影響頁面內容(如 Clean-param: sessionid /index.php)。

協議生效條件

  • 文件必須位于網站根目錄(如 https://www.example.com/robots.txt)。
  • 文件編碼需為 UTF-8 ,且無BOM頭。
  • 遵循協議的爬蟲會遵守規則,但惡意爬蟲可能無視協議。

局限性

  • 不保證隱私robots.txt 無法阻止直接訪問,敏感內容需通過身份驗證或其他方式保護。
  • 動態URL處理 :無法完全阻止參數生成的動態頁面被爬取。
  • 緩存延遲 :爬蟲可能不會實時更新規則,需等待重新抓取。

驗證工具

  • Google Search Console、Bing Webmaster Tools 提供 robots.txt 測試功能。
  • 在線工具(如 Robots.txt Checker )可驗證規則是否正確。

2.3 一個爬蟲demo

  • 獲取百度首頁

請添加圖片描述


3 Web請求與HTTP協議

3.1 一個web請求的全過程

請添加圖片描述

3.2 判斷頁面源代碼位置

  • 上面是服務器渲染,即服務器直接把數據全部寫入到html中。
  • 下面是客戶端渲染,?般是第?次請求服務器返回?堆HTML框架結構。然后再次請求到真正保存數據的服務器,由這個服務器返回數據,最后在瀏覽器上對數據進?加載。

請添加圖片描述

3.3 HTTP 協議

協議:就是兩個計算機之間為了能夠流暢的進?溝通?設置的?個君?協定。

  • 常?的協議有TCP/IP,SOAP協議,HTTP協議,SMTP協議等等。

HTTP協議:Hyper Text Transfer Protocol(超?本傳輸協議)的縮寫,是?于從萬維?(WWW:World Wide Web )服務器傳輸超?本到本地瀏覽器的傳送協議。

HTTP 請求

  • 有三塊內容:
  1. 請求? -> 請求?式(get/post) 請求url地址 協議
  2. 請求頭 -> 放?些服務器要使?的附加信息
  3. 請求體 -> ?般放?些請求參數

請求?式:

  • GET: 顯示提交

  • POST: 隱示提交

  • 請求頭中最常?的?些重要內容(爬?需要):

    • User-Agent:請求載體的身份標識(?啥發送的請求)
    • Referer:防盜鏈(這次請求是從哪個??來的?反爬會?到)
    • cookie:本地字符串數據信息(?戶登錄信息,反爬的token)

HTTP 響應

  • 也有三塊內容:
  1. 狀態? -> 協議 狀態碼
  2. 響應頭 -> 放?些客戶端要使?的?些附加信息
  3. 響應體 -> 服務器返回的真正客戶端要?的
  • 響應頭中?些重要的內容:
    • Content-Type:返回內容的內容類型,比如Content-Type: text/html; charset=utf-8
    • 各種神奇的莫名其妙的字符串(這個需要經驗了,?般都是token字樣,防?各種攻擊和反爬)

3.4 requests 模塊入門

  • 常?的抓取??的模塊通常使??個?urllib還要簡單的第三?模塊requests

總結

  • Python爬蟲的入門介紹。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910407.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端面試十之vuex

Vuex 是一個專為 Vue.js 應用程序設計的狀態管理模式和庫,它集中管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。以下是關于 Vuex 的詳細介紹: 1. 核心概念 State(狀態) 它是 Vuex 中存…

Django中為api自定義一些裝飾器:如參數校驗等

在Django中使用了rest_framework時,一般我們會定義ModelSerializer來校驗request.data中參數是否存在和參數類型。 但當我們只是想簡單校驗一些api的url上是否存在某些參數時,該怎么辦?當然我們也可以通過定義Serializer來實現,但…

uni-app項目實戰筆記21--uniapp緩存的寫入和讀取

一、緩存的寫入 uni.setStorageSync("storageClassList",classifyList.value) 二、緩存的讀取,如果緩存不存在,則返回空數組 const storageClassList uni.getStorageSync("storageClassList") || []; 三、對讀取到的數據進行轉…

Zama密碼分析資助計劃

1. 引言 2025年5月,Zama團隊正式啟動了 Zama 密碼分析資助計劃(Cryptanalysis Grant Program),以支持那些致力于“破解”系統的研究人員: 無論是通過密碼分析、側信道攻擊、故障注入,還是其他創新性方法。…

【數據結構與算法】數據結構初階:詳解順序表和鏈表(一)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為往圣繼絕學,為萬世開太平 前言&am…

Arrays.asList() 的不可變陷阱:問題、原理與解決方案

🚨 Arrays.asList() 的不可變陷阱:問題、原理與解決方案 #Java集合 #開發陷阱 #源碼解析 #編程技巧 一、問題現象:無法修改的集合 當開發者使用 Arrays.asList() 轉換數組為集合時,嘗試添加/刪除元素會拋出異常: St…

uniapp對接融云IM即時通訊,語音消息無法播放

uniapp對接融云IM即時通訊,語音消息無法播放 問題背景解決方案1.本地音頻播放2.遠程音頻播放 問題背景 最近使用uniapp對接融云的即時通訊sdk,發送語音消息后,本地音頻(local)和遠程音頻(remote&#xff0…

【C++開發】CMake構建工具

目錄 1,CMake介紹 2,配置文件CMakeLists.txt 1,CMake介紹 CMake 是一個開源的、跨平臺的自動化構建系統生成工具,廣泛用于 C 和 C 項目的構建管理。它使用一個名為 CMakeLists.txt 的配置文件來定義如何構建項目,并能…

大模型MetaGPT面試題匯總及參考答案

目錄 MetaGPT 的核心目標與設計理念是什么? 它如何實現多角色協同(如 Planner、Coder、Reviewer、Tester)? 不同 agent 之間的通信機制是怎樣的? MetaGPT 是如何進行任務拆分與任務分配的? 它如何實現可執行的反饋循環(self-correcting)? 在實際項目中如何監控各…

深入理解 HTTP 狀態碼 —— 前端后端必備知識

📚深入理解 HTTP 狀態碼 —— 前端后端必備知識 作者:lvzi 日期:2025 年 6 月 22 日 標簽:HTTP、前端、后端、狀態碼、Web基礎 💡引言 在 Web 開發過程中,我們經常會遇到形如 200 OK、404 Not Found、500…

Python商務數據分析——Python 入門基礎知識學習筆記

一、簡介 1.1 Python 特性 解釋型語言:代碼無需編譯可直接運行,適合快速開發。 動態類型:變量類型在運行時確定(如x1后x"str"仍合法)。 面向對象:支持類、對象、繼承等特性,代碼可…

IT小白到高手:HCIA、HCIP、HCIE認證攻略

大家好,這里是G-LAB IT實驗室。6月22日,周日!HCIA+CCNA開新班啦! 01 華為HCIA、HCIP、HCIE有必要考證嗎 在如今競爭激烈的IT行業,華為的認證體系已成為眾多網絡工程師的重要參考。…

【IndexDB】前端IndexedDB終極指南

前端 IndexedDB 詳細教程 IndexedDB 是一個瀏覽器內置的 NoSQL 數據庫系統,允許在客戶端存儲大量結構化數據,并支持高性能搜索。相比 localStorage,IndexedDB 更適合存儲大量數據并提供更復雜的查詢功能。 基本概念 數據庫:每個…

擴散模型與強化學習(1):字節Seedance中的人類偏好優化實踐

擴散模型與強化學習(0):專欄匯總與導航 前言:最近強化學習在Diffusion Models得到了越來越多廣泛的應用,本專欄將系統性地介紹當前Diffusion Models中實用且前沿的技術進展。這篇博客介紹字節最新的視頻生成模型Seedance 1.0: Exploring the …

【內存】Linux 內核優化實戰 - vm.max_map_count

目錄 vm.max_map_count參數全面解析一、參數定義與核心作用二、默認值與關鍵調整場景1. 默認限制與不足場景2. 典型報錯案例 三、操作指南:查看與修改方法四、場景化建議值與配置示例五、關鍵注意事項六、延伸知識:內存映射的底層邏輯 vm.max_map_count參…

組件之間的雙向綁定:v-model

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

GetX 實現 MVVM 架構, 高效 路由管理 和 狀態管理

GetX是Flutter中的一個高效的狀態管理與路由管理框架,結合MVVM架構能簡化代碼邏輯。以下是使用GetX實現MVVM架構,并完成路由和狀態管理的核心思路與實踐: 一、MVVM架構在GetX中的映射 MVVM(Model-View-ViewModel)與G…

Qt項目,記事本

一、項目說明 項目功能: (1)打開文件:點擊打開文件按鈕彈出對話框,選擇文本文件后,在主窗口編輯界面顯示內容。 (2)關閉文件:關閉打開的文件,并詢問是否保存…

【全開源】填表問卷統計預約打卡表單系統+uniapp前端

一.系統介紹 填表問卷統計預約打卡表單系統是ThinkPHPUniApp開發的一款集信息填表、預約報名,簽到打卡、活動通知、報名投票、班級統計等功能的自定義表單統計小程序。 二.搭建環境 系統環境:CentOS、 運行環境:寶塔 Linux 網站環境&…

開源 python 應用 開發(一)python、pip、pyAutogui、python opencv安裝

最近有個項目需要做視覺自動化處理的工具,最后選用的軟件為python,剛好這個機會進行系統學習。短時間學習,需要快速開發,所以記錄要點步驟,防止忘記。 鏈接: 開源 python 應用 開發(一&#x…