python網絡爬蟲開發實戰之基本庫使用

目錄

第二章 基本庫的使用

2.1 urllib的使用

1 發送請求

2 處理異常

3 解析鏈接

4 分析Robots協議

2.2 requests的使用

1 準備工作

2 實例引入

3 GET請求

4 POST請求

5 響應

6 高級用法

2.3 正則表達式

1 實例引入

2 match

3 search

4 findall

5 sub

6 compile

2.4 httpx的使用

1 示例

2 安裝

3 基本使用

4 client對象

5 支持http/2.0

6 支持異步請求


第二章 基本庫的使用

最基礎的http包括urllib、requests、httpx。

2.1 urllib的使用

使用urllib可以實現http請求的發送,著需要指定請求的url、請求頭、請求體等。此外,urllib還可以把服務器返回的響應轉換為python對象。

1 發送請求

使用urllib庫中的request模塊,可以方便地發送請求并得到響應。

  • urlopen
import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))# 利用type方法輸出響應的類型
import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(type(response))
print(response.status)
print(response.getheaders)
print(response.getheader('Server'))# urlopen方法的API
urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=Flase, contexy=None)
  • data參數:可選,如果傳遞了這個參數,請求方式是post(模擬表單提交)。在添加該參數,需要使用bytes方法將參數轉化為字節流編碼格式的內容,即bytes類型。

運行結果:

  • timeout參數,設置超時時間,單位為秒。如果請求超出了設置的這個時間,還沒有得到響應,就會拋出異常。如果不指定該參數,則會使用全局默認事件。

或如下:

  • 其他參數:context參數,必須是ssl.SSLContext類型,用來指定SSL的設置;cafile和capath分別用來指定CA證書和其路徑;cadefault參數現在已經啟用了,默認值為false。
  • request

  • 高級用法:handler,可以理解為各種處理器,包括登陸驗證、處理cookie、處理代理設置。

  • 驗證:適用于啟用了基本身份認證的網站

  • 代理

  • cookie

獲取網站的cookie:

運行結果:

(輸出了每條cookie條目的名稱和值)

輸出文件格式的內容:

1.txt格式

2.lwp格式

通過load方法讀取本地的cookie文件,獲取其中內容。

2 處理異常

當出現問題時,request模塊便會拋出error模塊中定義的異常。

  • URLError

  • HTTPError

3 解析鏈接

  • urlparse

  • urlunparse

  • urlsplit

  • urlunsplit

  • urljoin

  • urlencode

  • parse_qs

  • parse_qsl

  • quote

  • unquote

4 分析Robots協議

利用urllib庫的robotparser模塊,可以分析網站的robots協議。

  • Robots協議

  • 爬蟲名稱

  • robotparser

2.2 requests的使用

1 準備工作

pip install requests

2 實例引入

3 GET請求

  • 基本實例

  • 抓取網頁

  • 抓取二進制數

  • 添加請求頭

4 POST請求

5 響應

6 高級用法

  • 文件上傳

  • cookie設置

  • session維持

  • SSL證書驗證

  • 超時設置

  • 身份認證

  • 代理設置

  • prepared request

2.3 正則表達式

1 實例引入

2 match

  • 匹配目標

  • 通用匹配

  • 貪婪與非貪婪

  • 修飾符

  • 轉義匹配

3 search

4 findall

5 sub

6 compile

2.4 httpx的使用

對于強制使用http2.0協議的網站,使用urllib和requests是無法爬取數據的。這時,需要要用到支持http/2.0的請求庫,比較有代表性的是hyper和httpx。

1 示例

2 安裝

pip install httpx

pip install 'httpx[http2]'

3 基本使用

4 client對象

5 支持http/2.0

6 支持異步請求

來源:

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

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

相關文章

Linux內存分頁:原理、優勢與實踐

一、分頁機制核心原理 1.1 分頁技術原理 核心思想: 將虛擬地址空間和物理內存劃分為固定大小的頁(Page),通過頁表(Page Table)建立虛擬頁到物理頁框(Page Frame)的映射。例如,x86_64架構的4級頁表結構: 虛擬地址: [63-48] | [47-39] PGD | [38-30] PUD | [29-21]…

文件上傳漏洞與phpcms漏洞安全分析

目錄 1. 文件上傳漏洞簡介 2. 文件上傳漏洞的危害 3. 文件上傳漏洞的觸發條件 1. 文件必須能被服務器解析執行 2. 上傳目錄必須支持代碼執行 3. 需要能訪問上傳的文件 4. 例外情況:非腳本文件也可能被執行 4. 常見的攻擊手法 4.1 直接上傳惡意文件 4.2 文件…

模塊和端口

1、模塊 模塊內部的5個組成是:變量聲明 數據流語句 低層模塊實例 函數和任務 行為語句 SR鎖存器 timescale 1ns / 1psmodule SR_latch(input wire Sbar ,input wire Rbar ,output wire Q ,output wire Qbar);nand…

爬蟲(持續更新ing)

爬蟲(持續更新ing) # 網絡請求 # url統一資源定位符(如:https://www.baidu.com) # 請求過程:客戶端的web瀏覽器向服務器發起請求 # 請求又分為四部分:請求網址,請求方法&#xff08…

2025.3.2機器學習筆記:PINN文獻閱讀

2025.3.2周報 一、文獻閱讀題目信息摘要Abstract創新點網絡架構實驗結論不足以及展望 一、文獻閱讀 題目信息 題目: Physics-Informed Neural Networks of the Saint-Venant Equations for Downscaling a Large-Scale River Model期刊: Water Resource…

使用IDEA如何隱藏文件或文件夾

選擇file -> settings 選擇Editor -> File Types ->Ignored Files and Folders (忽略文件和目錄) 點擊號就可以指定想要隱藏的文件或文件夾

前端基礎之腳手架

腳手架結構 目錄結構 這里的package.json,存放著我們去執行npm run serve 或是npm run build的腳本文件 package-lock.json中存放著我們使用的外部包的版本類型,相當于maven src下的main.js是整個項目的入口文件 src下的components用于存放組件&#xff…

MacBook上API調??具推薦

在當今的軟件開發中,API調用工具已經成為了開發者不可或缺的助手。無論是前端、后端還是全棧開發,API的調試、測試和管理都是日常工作中的重要環節。想象一下,如果沒有這些工具,開發者可能需要手動編寫復雜的CURL命令,…

pgsql行列轉換

目錄 一、造測試數據 二、行轉列 1.函數定義 2.語法 3.示例 三、列轉行 1.函數定義 2.語法 3.示例 一、造測試數據 create table test ( id int, json1 varchar, json2 varchar );insert into test values(1,111,{111}); insert into test values(2,111,222,{111,22…

NVIDIA(英偉達) GPU 芯片架構發展史

GPU 性能的關鍵參數 CUDA 核心數量(個):決定了 GPU 并行處理能力,在 AI 等并行計算類業務下,CUDA 核心越多性能越好。 顯存容量(GB):決定了 GPU 加載數據量的大小,在 AI…

《Python實戰進階》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻擊

第10集:Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻擊 在現代 Web 開發中,安全性是至關重要的。無論是用戶數據的保護,還是系統穩定性的維護,開發者都需要對常見的 Web 安全威脅有深刻的理解,并采取有效的防…

【大數據分析 | 深度學習】在Hadoop上實現分布式深度學習

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?智能大數據分析 ? ? ? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘,以提取有價值的信息和洞察。它結合了大數據技術、人工智能(AI)、機器學習(ML&a…

盛鉑科技SCP4000射頻微波功率計與SPP5000系列脈沖峰值 USB功率計 區別

在射頻(RF)和微波測試領域,快速、精準的功率測量是確保通信系統、雷達、衛星設備等高性能運行的核心需求。無論是連續波(CW)信號的穩定性測試,還是脈沖信號的瞬態功率分析,工程師都需要輕量化、…

自學微信小程序的第十三天

DAY13 1、使用map組件在頁面中創建地圖后,若想在JS文件中對地圖進行控制,需要通過地圖API來完成。先通過wx.createMapContext()方法創建MapContext(Map上下文)實例,然后通過該實例的相關方法來操作map組件。 const m…

深入解析 C# 中的泛型:概念、用法與最佳實踐

C# 中的 泛型(Generics) 是一種強大的編程特性,允許開發者在不預先指定具體數據類型的情況下編寫代碼。通過泛型,C# 能夠讓我們編寫更靈活、可重用、類型安全且性能優良的代碼。泛型廣泛應用于類、方法、接口、委托、集合等多個方…

H5DS編輯器是如何讓企業快速構建動態頁面

H5DS編輯器核心亮點: 1.拖拽式操作,小白友好:無需設計與代碼基礎!通過簡單拖拽元素、調整文字和動畫,即可生成交互式H5頁面。內置海量模板和素材庫,支持自定義設計風格,輕松適配企業品牌需求。…

Unity ECS與MonoBehaviour混合架構開發實踐指南

一、混合架構設計背景 1. 技術定位差異 ECS(Entity Component System):面向數據設計(DOD),適用于大規模實體計算(如10萬單位戰斗) MonoBehaviour:面向對象設計&#xf…

[項目]基于FreeRTOS的STM32四軸飛行器: 三.電源控制

基于FreeRTOS的STM32四軸飛行器: 三.電源控制 一.IP5305T芯片手冊二.電源控制任務 一.IP5305T芯片手冊 注意該芯片低功耗特性,為防止進入待機,每隔一段時間發送一個電平。 官方提供的芯片外圍電路設計圖: 電氣特性: 當負載電流持…

java環境部署

java環境部署 一、準備工作 jrejdkeclipse jdk下載:21和1.8-----官網:Oracle:Java 下載 |神諭 該處選擇要依據自身的系統類型選擇下載 idea的下載安裝:IntelliJ IDEA | Other Versions 二、安裝 三、環境配置 四、使用 五、i…

微服務通信:用gRPC + Protobuf 構建高效API

引言 在微服務架構中,服務之間的通信是系統設計的核心問題之一。傳統的RESTful API雖然簡單易用,但在性能、類型安全和代碼生成等方面存在一定的局限性。gRPC作為一種高性能、跨語言的RPC框架,結合Protobuf(Protocol Buffers&…