在系列文章的第一篇中介紹了 HTTP 協(xié)議,Python 提供了很多模塊來基于 HTTP 協(xié)議的網(wǎng)絡(luò)編程,urllib、urllib2、urllib3、httplib、httplib2,都是和 HTTP 相關(guān)的模塊,看名字覺得很反人類,更糟糕的是這些模塊在 Python2 與 Python3 中有很大的差異,如果業(yè)務(wù)代碼要同時兼容 2 和 3,寫起來會讓人崩潰。
幸運(yùn)地是,繁榮的 Python 社區(qū)給開發(fā)者帶來了一個非常驚艷的 HTTP 庫 requests,一個真正給人用的HTTP庫。它是 GitHUb 關(guān)注數(shù)最多的 Python 項目之一,requests 的作者是 Kenneth Reitz 大神。
requests 實(shí)現(xiàn)了 HTTP 協(xié)議中絕大部分功能,它提供的功能包括 Keep-Alive、連接池、Cookie持久化、內(nèi)容自動解壓、HTTP代理、SSL認(rèn)證、連接超時、Session等很多特性,最重要的是它同時兼容 python2 和 python3。
快速入門
requests 的安裝可以直接使用 pip 方法:pip install requests
>>> import requests# GET 請求>>> response = requests.get("https://foofish.net")
返回的時 Response 對象,Response 對象是 對 HTTP 協(xié)議中服務(wù)端返回給瀏覽器的響應(yīng)數(shù)據(jù)的封裝,響應(yīng)的中的主要元素包括:狀態(tài)碼、原因短語、響應(yīng)首部、響應(yīng)體等等,這些屬性都封裝在Response 對象中。
# 狀態(tài)碼>>> response.status_code200# 原因短語>>> response.reason'OK'# 響應(yīng)首部>>> for name,value i