requests庫和urllib包對比

2022-02-08 11:47:01 字數 2529 閱讀 8109

python中有多種庫可以用來處理http請求,比如python的原生庫:urllib包、requests類庫。urllib和urllib2是相互獨立的模組,python3.0以上把urllib和urllib2合併成乙個庫了,requests庫使用了urllib3。requests庫的口號是「http for humans」,為人類使用http而生,用起來不知道要比python原生庫好用多少呢,比起urllib包的繁瑣,requests庫特別簡潔和容易理解。話不多說,**為證~~~

下面我們來分別使用urllib包和requests庫寫乙個get請求,進行一下對比,如下圖:

#

-*- coding:utf8 -*-

import

urllib2

import

urllib

url_get = "

"def

use_params_urllib2():

#構建請求引數

params = urllib.urlencode()

print

'request params:

'print

params

#傳送請求

response = urllib2.urlopen('

?'.join([url_get,'

%s'])%params)

#處理響應

print

'>>>>>>response headers:

'print

response.info()

print

'status code:

'print

response.getcode()

print

'>>>>>>>response body:

'print

response.read()

if__name__ == '

__main__':

print

'use params urllib2:

'use_params_urllib2()

#

-*- coding:utf8 -*-

import

requests

url_get = "

"def

use_params_requests():

#構建請求引數

params =

#傳送請求

response = requests.get(url_get,params=params)

#處理響應

print

'>>>>>>response headers:

'print

response.headers

print

'>>>>>>status code:

'print

response.status_code

print

'>>>>>>>response body:

'print

response.text

if__name__ == '

__main__':

print

'use params requests:

'use_params_requests()

第一種使用的是urllib包,第二種使用的是requests庫,從以下幾個方面進行對比:

1)構建引數:在構建請求引數時,第一種需要將請求引數使用urllib庫的urlencode方法進行編碼預處理,非常麻煩

2)請求方法:傳送get請求時,第一種使用的urllib庫的urlopen方法開啟乙個url位址,而第二種直接使用requests庫的get方法,與http請求方式是對應的,更加直接、易懂

3)請求資料:第一種按照url格式去拼接乙個url字串,顯然非常麻煩,第二種按順序將get請求的url和引數寫好就可以了

4)處理響應:第一種處理訊息頭部、響應狀態碼和響應正文時分別使用.info()、.getcode()、.read()方法,第二種使用.headers、.status_code、.text方法,方法名稱與功能本身相對應,更方便理解、學習和使用

5)連線方式:看一下返回資料的頭資訊的「connection」,使用urllib庫時,"connection":"close",說明每次請求結束關掉socket通道,而使用requests庫使用了urllib3,多次請求重複使用乙個socket,"connection":"keep-alive",說明多次請求使用乙個連線,消耗更少的資源

6)編碼方式:requests庫的編碼方式accept-encoding更全,在此不做舉例

由此可見,requests庫更容易理解和閱讀,符合python哲學「readability counts」,可讀性很重要~更利於開發人員學習和使用,那就讓我們一起開啟python-requests庫的學習之旅吧~

ps:1.requests庫的官網是裡面有操作文件

2.requests庫的作者是乙個來自歐洲的愛好攝影的小哥哥,名叫kenneth reitz,他的個人**:裡面有他的帥照哦哈哈哈

requests庫和Scrapy比較

相同點 兩者都可以進行頁面請求和爬取,python爬蟲的兩個重要技術路線 兩者可用性都好,文件豐富,入門簡單 兩者都沒有處理js 提交表單 對應驗證碼等功能功能 可擴充套件 requests scrapy 頁面級爬蟲 級爬蟲 功能庫框架 併發性考慮不足,效能較差 併發性好,效能較高 重點在於爬蟲結構...

請求庫之requests庫

安裝 pip install requests get,delete,post 本質都是呼叫request函式 ret requests.get print ret.status code 響應狀態碼 print ret.text 響應體,轉成了字串 print ret.content ret re...

Requests庫的入門

windows平台下,以管理員模式執行cmd方法 說明requests.requests 構造乙個請求,支撐以下各方法的基礎方法 requests.get 獲取html網頁的主要方法,對應於http的get requests.head 獲取網頁頭資訊的的方法,對應於http的head request...