Python3網絡爬蟲開發--爬蟲基礎

網絡爬蟲基礎

1.1 HTTP基本原理

1.1.1 URI和URL

URI即統一資源標志符,URL即統一資源定位符。
有這樣一個鏈接,http://test.com/test.txt,在這個鏈接中,包含了訪問協議https訪問目錄(即根目錄)資源名稱(test.txt)。通過這樣的鏈接,可以在互聯網上找到這個資源,這就是URI/URL
URL是URI的子集,每個URL都是URI,但在URI中還包含另一個子類URN,即統一資源名稱,可以唯一標識這本書,但是沒有指定到哪里定位這本書。
在當今網絡中,很少使用URN,一般來說URI就是URL。

1.1.2 超文本

超文本就是網頁的HTML源代碼。
在瀏覽器中任意打開一個頁面,右擊選擇檢查,點擊Elements就可以看到網頁的源代碼,里面包含了各種標簽,網站正是解析了這些代碼才形成了網頁,這些代碼就是超文本。

1.1.3 HTTP和HTTPS

在URLhttp://test.com/test.txt中,開頭通常都是http或者https這就是訪問資源需要的協議類型。
HTTP,中文名為超文本傳輸協議,用于從網絡傳輸超文本數據道本地瀏覽器,保證高效而準確的傳送超文本文檔。
HTTPS,中文名為超文本傳輸安全協議,是HTTP的安全版,即HTTP下加入SSL層,簡稱HTTPS。因此,它傳輸的內容都是經過SSL加密的,它的主要作用是:

  • 建立一個信息安全通道來保證數據傳輸安全。
  • 確認網站的真實性。使用HTTPS的網站,都可以通過點擊瀏覽器地址欄的鎖頭標志查看網站的真實信息。

1.1.4 HTTP請求過程

當我們在瀏覽器地址欄中輸入了一個URL,回車之后,瀏覽器進行加載,就可以看到頁面內容。
在這個過程中,就是我們的瀏覽器向網站服務器發送了一個請求,網站解析后,返回給瀏覽器一個回應,回應中包含了頁面的源代碼等,瀏覽器解析之后,就呈現出了網頁。

1.1.5 請求

請求,由客戶端向服務端發出,包括四部分內容:

  • 請求方法
  • 請求網站
  • 請求頭
  • 請求體
1.請求方法

常見的請求方法有兩種:GET和POST。
GET請求:在瀏覽器中輸入URL并回車,這就是一個GET請求,請求的參數直接包含在URL中。
POST請求:在表單提交時發生,例如在登陸時,填寫賬號密碼,點擊登陸,通常就會發起一個POST請求,請求的數據通常一表單的形式傳輸。
GET和POST有如下區別:

  • GET請求的參數通常包含在URL中,數據可以在URL中看到;post請求的URL不包含數據,數據以表單形式傳輸,包含在請求體中。
  • GET請求提交的數據最多只有1024字節;POST在數據量上沒有限制。
    此外還有其他請求方法:
    GET 請求頁面,并返回頁面內容。
    HEAD 類似與GET請求,返回的相應中不含具體內容,用于獲取報頭。
    POST 大多數用于提交表單或者上傳文件,數據包含在請求體中。
    PUT 從客戶端向服務器傳送的數據取代指定文檔中的內容。
    DELETE 請求服務器刪除指定頁面。
    CONNECT 把服務器當跳板,讓服務器代替客戶端訪問其他網頁。
    OPTIONS 允許客戶端查看服務器的性能。
    TRACE 回顯服務器收到的請求,主要用于測試或者診斷。
2. 請求的網址

即是統一資源定位符URL。

3.請求頭

用來說明服務器要使用的附加信息。
Accept:請求報頭域,用于指定客戶端可接受哪些信息。
Accept-Language:指定客戶端可接受的語言類型。
Accept-Encoding:指定客戶端可接受的內容編碼。
Host:用于指定請求資源的主機IP和端口號,其內容為請求URL的原始服務器貨網關的位置。
Cookie:也常用Cookies。這是網站為辨別用戶而存儲在用戶本地的數據,主要功能為維持當前訪問對話,登陸之后,服務器對應信息就會存儲在Cookies中,每當瀏覽器向服務器發出請求時,就會在請求頭中加入Cookies,服務器以此辨識用戶身份,并且識別狀態為登陸狀態,返回登陸后的結果。
Referer:標識這個請求從哪個頁面發出。
User-Agent:一個特殊的字符串頭,使服務器識別用戶的操作系統及版本,瀏覽器及版本等信息。制作爬蟲時使用此信息偽裝成瀏覽器。
Content-Type:及互聯網媒體類型,在HTTP協議消息頭中用來表示具體請求中的媒體信息類型。

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

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

相關文章

OpenCV顏色變換cvtColor

OpenCV計算機視覺開發實踐:基于Qt C - 商品搜索 - 京東 顏色變換是imgproc模塊中一個常用的功能。我們生活中看到的大多數彩色圖片都是RGB類型的,但是在進行圖像處理時需要用到灰度圖、二值圖、HSV(六角錐體模型,這個模型中顏色的…

Hadoop----高可用搭建

目錄標題 **什么是高可用?****?搭建的步驟**一.jdk**安裝配置**- **要點**: 二.zookeeper**集群配置**- **要點** 三.Hadoop高可用的搭建- **要點**①環境變量的配置②配置文件的修改 ③內容分發④集群任務的初次啟動 什么是高可用? 通過冗余設計 自動…

【Rust 精進之路之第15篇-枚舉 Enum】定義、變體與數據關聯:表達多種可能性

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:當值擁有“選項”——超越結構體的表達力 在上一篇【結構體 Struct】中,我們學習了如何使用結構體將多個相關的數據字段組合成一個有意義的整體。結構體非常適合表示那些…

模擬實現strncat、qsort、atoi

目錄 前言 一、模擬實現strncat 參數 代碼演示: 二、模擬實現qsort 參數 代碼演示: 前言 本文主要是對strncat,qsort,atoi的模擬實現 一、模擬實現strncat C 庫函數 char *strncat(char *dest, const char *src, size_t n…

Ubuntu 系統中修改 MySQL 的 sql_mode

在 Ubuntu 系統中修改 MySQL 的 sql_mode 需要編輯 MySQL 的配置文件并重啟服務。以下是詳細步驟: 步驟 1:定位 MySQL 配置文件 MySQL 配置文件通常位于以下路徑之一(具體取決于安裝方式): /etc/mysql/my.cnf /etc/m…

進階算法 第一課:貪心

本文遵循 CC BY-NC-ND 4.0 協議,作者: U?ェ?*U \texttt{U?ェ?*U} U?ェ?*U,轉載請獲得作者授權。 歡迎大家來到進階算法第一課:貪心;我會分為以下幾點為大家講解貪心: 什么是貪心。貪心的性質與分類。…

AI領域:MCP 與 A2A 協議的關系

一、為何會出現MCP和A2A 協議是非常重要的東西,只有大家都遵循統一的協議,整體生態才好發展,正如有了HTML,互聯網才快速發展,有了OpenAPI, API才會快速發展。 Agent目前是發展最快的領域,從最初…

深度學習訓練中的顯存溢出問題分析與優化:以UNet圖像去噪為例

最近在訓練一個基于 Tiny-UNet 的圖像去噪模型時,我遇到了經典但棘手的錯誤: RuntimeError: CUDA out of memory。本文記錄了我如何從復現、分析,到逐步優化并成功解決該問題的全過程,希望對深度學習開發者有所借鑒。 訓練數據&am…

FramePack V2版 - 支持首尾幀生成,支持LoRA,支持批量,支持50系顯卡,一個強大的AI視頻生成軟件 本地一鍵整合包下載

FramePack 是斯坦福大學主導開發的視頻生成框架,是一種用于視頻生成的下一幀(下一幀部分)預測神經網絡結構,可以逐步生成視頻。FramePack 主要開發者之一,就是業內大名鼎鼎的張呂敏大佬,AI領域的“賽博佛祖…

STM32 HAL 通用定時器延時函數

使用通用定時器TIM3,實現ms、us延時。 delay.c #include "delay.h" #include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** brief 初始化定時器3用于延時* param 無* retval 無*/ void Delay_Init(void) {TIM_ClockConfigTypeDef sClock…

軟件功能測試和非功能測試有什么區別和聯系?

軟件測試是保障軟件質量的核心環節,而軟件功能測試和非功能測試作為測試領域的兩大重要組成部分,承擔著不同但又相互關聯的職責。 軟件功能測試指的是通過驗證軟件系統的各項功能是否按照需求規格說明書來正確實現,確保軟件的功能和業務流程…

使用Java調用TensorFlow與PyTorch模型:DJL框架的應用探索

在現代機器學習的應用場景中,Python早已成為廣泛使用的語言,尤其是在深度學習框架TensorFlow和PyTorch的開發和應用中。盡管Java在許多企業級應用中占據一席之地,但因為缺乏直接使用深度學習框架的能力,往往使得Java開發者對機器學…

Docker安裝beef-xss

新版的kali系統中安裝了beef-xss會因為環境問題而無法啟動,可以使用Docker來安裝beef-xss,節省很多時間。 安裝步驟 1.啟動kali虛擬機,打開終端,切換到root用戶,然后執行下面的命令下載beef的docker鏡像 wget https:…

metasploit(2)生成dll木馬

聲明!本文章所有的工具分享僅僅只是供大家學習交流為主,切勿用于非法用途,如有任何觸犯法律的行為,均與本人及團隊無關!!! 一、dll文件基本概念 DLL 是一種包含可由多個程序同時使用的代碼和數…

5V 1A充電標準的由來與技術演進——從USB誕生到智能手機時代的電力革命

點擊下面圖片帶您領略全新的嵌入式學習路線 🔥爆款熱榜 88萬閱讀 1.6萬收藏 一、起源:USB標準與早期電力傳輸需求 1. USB的誕生背景 1996年,由英特爾、微軟、IBM等公司組成的USB-IF(USB Implementers Forum)發布了…

使用Python設置excel單元格的字體(font值)

一、前言 通過使用Python的openpyxl庫,來操作excel單元格,設置單元格的字體,也就是font值。 把學習的過程分享給大家。大佬勿噴! 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…

【設計模式】深入解析代理模式(委托模式):代理模式思想、靜態模式和動態模式定義與區別、靜態代理模式代碼實現

代理模式 代理模式,也叫委托模式。 Spring AOP 是基于動態代理來實現 AOP 的 定義 為其他對象提供一種代理 以控制對這個對象的訪問。它的作用就是通過提供一個代理類,讓我們在調用目標方法的時候,不再是直接對目標方法進行調用,而…

利用java語言,怎樣開發和利用各種開源庫和內部/自定義框架,實現“提取-轉換-加載”(ETL)流程的自動化

一、ETL 架構設計的核心要素? 在企業級數據處理場景中,ETL(Extract-Transform-Load)流程自動化是數據倉庫、數據湖建設的核心環節。基于 Java 生態的技術棧,我們可以構建分層解耦的 ETL 架構,主要包含以下四層結構&am…

2023藍帽杯初賽內存取證-8

也是用到pslist模塊,加上grep過濾”chrome“即可: vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 pslist | grep "chrome" 第一個是PID,第二個是PPID,第三個是線程數,第四個…

【C語言】動態內存的常見錯誤

前言&#xff1a; 在上章節中講解了動態內存的概念和管理的核心函數。 在本章節繼續為大家介紹動態內存的常見錯誤&#xff0c;讓大家更好的理解運用。 補充&#xff1a;使用內存函數需要頭文件<stdlib.h> 對NULL指針的解引用操作 當使用malloc、calloc或realloc等函…