網頁抓取之requests庫的使用

Python網絡數據采集利器 - Requests庫的使用指南

簡介

在Python網絡爬蟲領域,優秀的第三方庫Requests可謂是必學的重要工具。它提供了相當人性化的API,讓我們能夠用極其簡潔的代碼發送HTTP/HTTPS請求,并且自動處理cookies、headers、編碼等諸多繁瑣細節,大大減輕了網頁抓取的編程負擔。本文將全面介紹Requests庫的主要功能和使用方式。

1. 基本使用

發送一個最基本的GET請求只需一行代碼:

import requests
resp = requests.get('https://www.example.com')

返回一個Response對象,包含服務器響應數據。可以調用它的text和content屬性獲取響應內容:

html = resp.text   # 響應內容字符串形式
binary = resp.content  # 響應內容字節流形式

2. 傳遞URL參數

使用params參數傳遞查詢參數:

payload = {'key1': 'value1', 'key2': 'value2'}
resp = requests.get('https://httpbin.org/get', params=payload)

3. 發送其他請求

除GET外還可發送POST、PUT、DELETE、HEAD、OPTIONS請求:

requests.post('https://httpbin.org/post', data={'k':'v'})
requests.put('https://httpbin.org/put', json={'k':'v'})
requests.delete('https://httpbin.org/delete')

4. 設置請求頭

通過headers參數傳入字典對象:

headers = {'User-Agent': 'Myspider/1.0'}
resp = requests.get('https://www.example.com', headers=headers)

5. HTTPS和證書驗證

對于HTTPS鏈接,默認執行安全證書驗證。通過verify參數可關閉或指定CA證書:

resp = requests.get('https://example.com', verify=False)
resp = requests.get('https://example.com', verify='/path/to/cacert.pem')

6. Cookies傳遞

手動傳入字典或通過RequestsCookieJar對象管理:

cookies = {'k1': 'v1', 'k2': 'v2'}
resp = requests.get('https://example.com/cookies', cookies=cookies)jar = requests.cookies.RequestsCookieJar()
jar.set('k1', 'v1')
resp = requests.get('https://example.com/cookies', cookies=jar)

7. 文件上傳

使用files參數傳入文件對象:

files = {'file': open('data.txt', 'rb')}
resp = requests.post('https://httpbin.org/post', files=files)

8. 處理重定向和超時?

通過allow_redirects和timeout參數控制重定向和超時時間。

9. 會話對象

通過Session對象跨請求保持狀態,自動處理cookies等。

s = requests.Session()
s.get('https://example.com/auth')  # 發送認證請求
resp = s.get('https://example.com/data') # 使用認證憑據訪問數據

以上就是Requests庫的主要使用方式,它提供了高層次、人性化的Python HTTP客戶端操作接口,極大簡化了網絡請求的編程工作,無疑是爬蟲開發者的必備利器。當然,功能更加強大的Scrapy爬蟲框架也是基于Requests庫實現的。總之,掌握了Requests,您就可以開啟網絡數據采集之旅了。

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

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

相關文章

【pdb的使用方法】

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 一、 pdb 是什么?二、基本用法1.啟動 PDB 調試器:2.單步執行代碼:3.查看變量值:4.退出調試器: 三、高級用…

指數分布的理解,推導與應用

指數分布的定義 在浙大版的教材中,指數分布的定義如下: 若連續型的隨機變量 X X X的概率密度為: f ( x ) { 1 θ e ? x θ , x>0 0 , 其他 f(x) \begin{cases} \frac{1}{\theta} e^{-\frac{x}{\theta}}, & \text{x>0}\\ 0, &a…

mvn編譯所有單元測試報錯OOM

org.mockito.exceptions.base.MockitoException: Cannot instantiate InjectMocks field named ‘productLogic’ of type ‘class .ProductLogic’. You haven’t provided the instance at field declaration so I tried to construct the instance. However the constructo…

Python正則表達式與Excel文件名批量匹配技術文章

目錄 引言 正則表達式基礎 Python中的re模塊 Excel文件名批量匹配案例 常見問題與解決方案 結論 引言 在現代辦公環境中,Excel文件幾乎成為了數據分析和處理的標配工具。由于Excel文件可能包含大量的數據和信息,因此,對Excel文件的命名…

在aspNetCore中 使用System.Text.Json的定制功能, 將定制化的json返回給前端

C# 默認大寫, 而大部分的前端默認小寫, 這時候可以如此配置: builder.Services.AddControllers().AddJsonOptions((opt) > {opt.JsonSerializerOptions.PropertyNamingPolicy System.Text.Json.JsonNamingPolicy.CamelCase;opt.JsonSerializerOptions.WriteIndented true…

DSPF網絡類型實驗1

對R6配置 對R1配置 對R2 對R3 對R4 對R5 對R1R2R3R4R5加用戶 環回處理 然后開始配置缺省 R1有兩個下一跳 3,4,5同R2 然后對R1 dynamic動態 對R2 手寫 把注冊加上 register R3同R2處理

機柜里面的設備有哪些

一、服務器 服務器是機柜中最常見的設備之一。它們通常被用于存儲和運行數據、應用程序和服務。不同的服務器通常使用不同的操作系統和處理器架構,以滿足不同的需求。服務器可以使用冗余電源和冗余存儲空間等措施,以確保數據安全和可靠性。 二、交換機 交…

刪除鏈表的倒數第N個節點-力扣

第一種方法是使用前后指針,前指針先向前走n1步,然后前后指針同時向前,當前指針指向NULL時,后指針正好指向需要刪除的節點的前一個節點,操作后指針刪除即可。 代碼如下: /*** Definition for singly-linked…

醫學圖像分割

論文:Medical Image Segmentation Using Deep Learning: A Survey 參考:[醫學圖像分割綜述] Medical Image Segmentation Using Deep Learning: A Survey-CSDN博客 一、背景 特征表示的困難:模糊、噪聲、對比度低--->CNN屬于語義分割&a…

Web Server項目實戰2-Linux上的五種IO模型

上一節內容的補充:I/O多路復用是同步的,只有調用某些API才是異步的 Unix/Linux上的五種IO模型 a.阻塞 blocking 調用者調用了某個函數,等待這個函數返回,期間什么也不做,不停地去檢查這個函數有沒有返回&#xff0c…

Offline RL : Beyond Reward: Offline Preference-guided Policy Optimization

ICML 2023 paper code preference based offline RL,基于HIM,不依靠額外學習獎勵函數 Intro 本研究聚焦于離線偏好引導的強化學習(Offline Preference-based Reinforcement Learning, PbRL),這是傳統強化學習&#x…

輕量音樂網站程序源碼,在線音樂免費聽歌

這是一個高品質的音樂共享和流媒體平臺,用戶可以在這個網站上免費在線聽歌。這個輕量級的音樂網站程序源碼,是您創建自己的音樂流媒體網站的最佳選擇!它還支持制作插件,并且在更新后,您可以保留您的自定義設置。 下 載…

操作系統408考研-經典例題

什么是操作系統?答:操作系統,是計算機系統中最基本、最重要的系統軟件,是其它軟件 的***支撐***。控制和管理計算機系統的硬件和軟件資源,合理的組織計算機工 作流程,并為用戶使用計算機提供公共和基本的服務 2.多道程序 (multiprogrammming) 和多重處理 (multiprocessi…

Python基于PyQt6制作GUI界面——多選框

QCheckBox 是 PyQt6 中的一個復選框控件&#xff0c;它允許用戶通過單擊來選擇或取消選擇某個選項。與 QRadioButton 不同&#xff0c;QCheckBox 控件并不互斥&#xff0c;這意味著用戶可以同時選擇多個 QCheckBox。示例對應的制作的 ui文件 界面如下所示。 <?xml version…

【MATLAB源碼-第215期】基于matlab的8PSK調制CMA均衡和RLS-CMA均衡對比仿真,對比星座圖和ISI。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 CMA算法&#xff08;恒模算法&#xff09; CMA&#xff08;Constant Modulus Algorithm&#xff0c;恒模算法&#xff09;是一種自適應盲均衡算法&#xff0c;主要用于消除信道對信號的碼間干擾&#xff08;ISI&#xff09;…

Python使用thread模塊實現多線程

介紹&#xff1a; 線程&#xff08;Threads&#xff09;是操作系統提供的一種輕量級的執行單元&#xff0c;可以在一個進程內并發執行多個任務。每個線程都有自己的執行上下文&#xff0c;包括棧、寄存器和程序計數器。 在Python中&#xff0c;可以使用threading模塊創建和管理…

SQL練習2.3

建表 # 學生表 create table t_student (stu_id varchar(10),stu_name varchar(10),stu_age datetime,stu_sex varchar(10) );# 課程表 create table t_t_course (c_id varchar(10),c_name varchar(10),c_teaid varchar(10) );# 教師表 create table t_t_teacher (tea…

nginx 動靜分離、gzip壓縮、負載均衡、root/alias

在Nginx中&#xff0c;動靜分離、gzip壓縮、負載均衡以及root和alias指令是常見的配置和優化點。下面我將分別解釋這些概念和如何配置它們。 動靜分離 動靜分離是指將動態請求和靜態請求分開處理&#xff0c;由不同的服務器或Nginx的不同位置來處理。這樣可以提高網站的性能和…

SpringBoot 啟動報錯,EnableConfigurationProperties 注解跳坑記

使用SpringBoot 腳手架搭建的一個簡單的 web demo &#xff0c;開啟了屬性自動注入&#xff0c;配置文件如下&#xff1a; Setter Getter Configuration ConfigurationProperties(prefix "com.ff") EnableConfigurationProperties(FFProperties.class) public clas…