Python Request庫入門

Request庫安裝方法

Request官網(wǎng)

  • 使用管理員權(quán)限啟動 command控制臺(win+X 命令提示符(管理員))
  • 使用pip安裝requests庫(默認(rèn)配置好python以及pip的環(huán)境變量)
pip3 install requests

Request庫方法介紹

方法 說明
requests.request() 構(gòu)造一個請求典勇,支撐一下各方法的基礎(chǔ)方法
requests.get() 獲取HTML網(wǎng)頁的主要方法蔚叨,對應(yīng)于HTTP的GET
requests.head() 獲取HTML網(wǎng)頁頭信息的方法揽祥,對應(yīng)于HTTP的HEAD
requests.post() 向HTML網(wǎng)頁提交POST請求的方法泵喘,對應(yīng)于HTTP的POST
requests.put() 向HTML網(wǎng)頁提交PUT請求的方法蚀浆,對應(yīng)于HTTP的PUT
requests.patch() 向HTML網(wǎng)頁提交局部修改請求冲簿,對應(yīng)于HTTP的PATCH
requests.delete() 向HTML頁面提交刪除請求,對應(yīng)于HTTP的DELETE

request.get()方法

構(gòu)造一個向服務(wù)器請求資源的Request對象
返回一個包含服務(wù)器資源的Response對象

r = requests.get(url)
requests.get(url, params=None, **kwargs)

url:擬獲取頁面的url鏈接
params:url中的額外參數(shù)擦剑,字典或字節(jié)流格式妖胀,可選
**kwargs:12個控制訪問的參數(shù)

def get(url, params=None, **kwargs):
    kwargs.setdefault('allow_redirects', True)
    return request('get', url, params=params, **kwargs)

response對象的屬性

屬性 說明
r.status_code HTTP請求的返回狀態(tài)芥颈,200表示連接成功,404表示失敗
r.text HTTP響應(yīng)內(nèi)容的字符串形式赚抡,即爬坑,url對應(yīng)的頁面內(nèi)容
r.encoding 從HTTP header中猜測的響應(yīng)內(nèi)容編碼方式
r.apparent_encoding 從內(nèi)容分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式)
r.content HTTP響應(yīng)內(nèi)容的二進(jìn)制形式

理解Response的編碼

屬性 說明
r.encoding 從HTTP header中猜測的響應(yīng)內(nèi)容編碼方式
r.apparent_encoding 從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式)

r.encoding:如果header中不存在charset,則認(rèn)為編碼為ISO-8859-1
r.apparent_encoding:根據(jù)網(wǎng)頁內(nèi)容分析出的編碼方式

理解Requests庫的異常

異常 說明
requests.ConnectionError 網(wǎng)絡(luò)連接錯誤異常涂臣,如DNS查詢失敗盾计、拒絕連接等
requests.HTTPError HTTP錯誤異常
requests.URLRequired URL缺失異常
requests.TooMangRedirects 超過最大重定向次數(shù),產(chǎn)生重定向異常
requests.ConnectTimeout 連接遠(yuǎn)程服務(wù)器超時異常
requests.Timeout 請求URL超時赁遗,產(chǎn)生超時異常
r.raise_for_status() 如果不是200署辉,產(chǎn)生異常requests.HTTPError

爬去網(wǎng)頁的通用代碼框架

import requests
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status() #如果狀態(tài)不是200,引發(fā)HTTPError異常#
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "產(chǎn)生異常"

if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLText(url))

HTTP協(xié)議對資源的操作

方法 說明
GET 請求獲取URL位置的資源
HEAD 請求獲取URL位置資源的響應(yīng)消息報告岩四,即獲得該資源的頭部信息
POST 請求向URL位置的資源后附加新的數(shù)據(jù)
PUT 請求向URL位置存儲的一個資源哭尝,覆蓋原URL位置的資源
PATCH 請求局部更新URL位置的資源,即改變該處資源的部分內(nèi)容
DELETE 請求刪除URL位置存儲的資源

Request方法

requests.request(method, url, **kwargs)

method:請求方式
url:擬獲取頁面的url鏈接

r = requests.request('GET', url, \*\*kwargs)
r = requests.request('HEAD', url, \*\*kwargs)
r = requests.request('POST', url, \*\*kwargs)
r = requests.request('PUT', url, \*\*kwargs)
r = requests.request('PATCH', url, \*\*kwargs)
r = requests.request('DELETE', url, \*\*kwargs)
r = requests.request('OPTIONS', url, \*\*kwargs)

**kwargs:控制訪問的參數(shù)剖煌,均為可選項材鹦,共13個
params:字典或字節(jié)序列,作為參數(shù)增加到url中

>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('GET', 'http://python123.io/ws',  params=kv)
>>> print(r.url)
http://python123.io/ws?key1=value1&key2=value2

data:字典耕姊、字節(jié)序列或文件對象桶唐,作為Request的對象

>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('POST', 'http://python123.io/ws', data=kv)
>>> body = '主體內(nèi)容'
>>> r = requests.request('POST', 'http://python123.io/ws', data=body)

json:JSON格式的數(shù)據(jù),作為Request的內(nèi)容

>>> kv = {'key1': 'value1'}
>>> r = requests.request('POST', 'http://python123.io/ws', json=kv)

headers:字典茉兰,HTTP定制頭

>>> hd = {'user-agent': 'Chrome/10'}
>>> r = requests.request('POST', 'http://python123.io/ws', headers=hd)

cookies:字典或CookieJar尤泽,Request中的cookie
auth:元組,支持HTTP認(rèn)證功能
files:字典類型规脸,傳輸文件

>>> fs = {'file': open('data.xls','rb')}
>>> r = requests.request('POST', 'http://python123.io/ws', files=fs)

timeout:設(shè)定超時時間坯约,秒為單位

>>> r = requests.request('GET', 'http://www.baidu.com', timeout=10)

proxies:字典類型,設(shè)置訪問代理服務(wù)器燃辖,可以增加登錄認(rèn)證

>>> pxs = {'http': 'http://user:pass@10.10.10.1:1234'
                'https': 'https://10.10.10.1:4321'}
>>> r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)

allow_redirects:True/False鬼店,默認(rèn)為Ture,重定向開關(guān)
stream:True/False黔龟,默認(rèn)為True妇智,獲取內(nèi)容立即下載開關(guān)
verigy:True/False,默認(rèn)為True氏身,認(rèn)證SSL證書開關(guān)
cert:本地SSL證書路徑

requests.get(url, params=None, **kwargs)

url:擬獲取頁面的url鏈接
params:url中的額外參數(shù)巍棱,字典或字節(jié)流格式,可選
**kwargs:12個控制訪問的參數(shù)

requests.head(url, **kwargs)

url:擬獲取頁面的url鏈接
**kwargs:13個控制訪問的參數(shù)

requests.post(url, data=None, json=None, **kwargs)

url:擬獲取頁面的url鏈接
data:字典蛋欣、字節(jié)序列或文件航徙,Request的內(nèi)容
json:JSON格式的數(shù)據(jù),Request的內(nèi)容
**kwargs:11個控制訪問參數(shù)

requests.put(url, data=None, **kwargs)

url:擬更新頁面的url鏈接
data:字典陷虎、字節(jié)序列或文件到踏,Request的內(nèi)容
**kwargs:12個控制訪問參數(shù)

requests.patch(url, data=None, **kwargs)

url:擬更新頁面的url鏈接
data:字典杠袱、字節(jié)序列或文件,Request的內(nèi)容
**kwargs:12個控制訪問參數(shù)

requests.delete(url, **kwargs)

url:擬刪除頁面的url鏈接
**kwargs:13個控制訪問參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窝稿,一起剝皮案震驚了整個濱河市楣富,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伴榔,老刑警劉巖纹蝴,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異踪少,居然都是意外死亡塘安,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門援奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兼犯,“玉大人,你說我怎么就攤上這事萝究∶舛迹” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵帆竹,是天一觀的道長。 經(jīng)常有香客問我脓规,道長栽连,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任侨舆,我火速辦了婚禮秒紧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挨下。我一直安慰自己熔恢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布臭笆。 她就那樣靜靜地躺著叙淌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愁铺。 梳的紋絲不亂的頭發(fā)上鹰霍,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機(jī)與錄音茵乱,去河邊找鬼茂洒。 笑死,一個胖子當(dāng)著我的面吹牛瓶竭,可吹牛的內(nèi)容都是我干的督勺。 我是一名探鬼主播渠羞,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼智哀!你這毒婦竟也來了堵未?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤盏触,失蹤者是張志新(化名)和其女友劉穎渗蟹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赞辩,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡雌芽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辨嗽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片世落。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糟需,靈堂內(nèi)的尸體忽然破棺而出屉佳,到底是詐尸還是另有隱情,我是刑警寧澤洲押,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布武花,位于F島的核電站,受9級特大地震影響杈帐,放射性物質(zhì)發(fā)生泄漏体箕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一挑童、第九天 我趴在偏房一處隱蔽的房頂上張望累铅。 院中可真熱鬧,春花似錦站叼、人聲如沸娃兽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽投储。三九已至,卻和暖如春翔试,著一層夾襖步出監(jiān)牢的瞬間轻要,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工垦缅, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留冲泥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像凡恍,于是被迫代替她去往敵國和親志秃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容