第一章 Requests庫

1.1 Requests庫方法介紹

requests.request() : 構(gòu)造一個請求市袖,支持下面方法(其它方法基礎(chǔ))

Requests 庫的六種方法和HTTP協(xié)議的六種方法一致:
requests.get(): 獲取HTML網(wǎng)頁的主要方法仔役,對于與HTTP的GET
requests.head(): 獲取HTML頁頭信息,對應(yīng)于與HTTP的HEAD
requests.post(): 向網(wǎng)頁提交POST請求方法,對應(yīng)于HTTP的POST
requests.put():向網(wǎng)頁提交PUT請求方法仪际,對應(yīng)于HTTP的PUT
requests.patch():向網(wǎng)頁提交局部修改請求咸作,對應(yīng)于HTTP的PATCH
requests.delete():向網(wǎng)頁提交刪除請求,對應(yīng)于HTTP的DELETE

用戶通過 requests.get()们豌, requests.head() 訪問 Internet涯捻,獲取資源
用戶通過 requests.put(),requests.post()望迎, requests.patch()障癌, requests.delete() 修改Internet網(wǎng)絡(luò)信息

假設(shè):URL位置有一組數(shù)據(jù) UserInfo, 包括UserID辩尊, UserName等20個字段
需求: 用戶修改了UserName涛浙,其它不變
方法: 1. 采用Patch, 僅向URL提交UserName局部修改信息
?? ?2. 采用PUT摄欲, 必須將所有20個字符一起提交URL轿亮,未提交字符會刪除

1.2 Response對象屬性

r.status_code: HTTP請求的返回狀態(tài),200表示訪問成功
r.text: HTTP響應(yīng)內(nèi)容的字符串格式
r.encoding: HTTP header的編碼方式
r.apparent_encoding: HTTP 內(nèi)容中的編碼方式
r.content: HTTP響應(yīng)內(nèi)容的二進(jìn)制形式(還原圖片)

主要注意 r.encoding 和 r.apparent_encoding 區(qū)別
r.encoding 如果header中不存在charset胸墙,則默認(rèn)為 ISO-8859-1

import requests
r = requests.get('http://www.baidu.com')
print(r.text)
print(r.encoding)
print(r.apparent_encoding)
r.encoding = 'utf-8'
print(r.text)

r.text: 一開始輸入非常規(guī)碼
r.encoding : 'ISO-8859-1'
r.apparent_encoding: 'utf-8'
r.text: 顯示可讀代碼

Requests 返回的異常值

requests.ConnectionError: 網(wǎng)絡(luò)連接錯誤異常我注,如DNS查詢失敗,拒絕連接等
requests.HTTPError: HTTP錯誤異常
requests.URLRequired: URL缺失異常
requests.tooManyRedirects: 超過最大定向次數(shù)迟隅,產(chǎn)生重定向異常
requests.ConnectTimeout: 連接遠(yuǎn)程服務(wù)器超時異常
requests.Timeout: 請求URL超時但骨,產(chǎn)生超時異常

1.3 爬蟲代碼通用框架結(jié)構(gòu)

import requests

def getHTMLText(url):
  try:
    r = requests.get(url, timeout = 30)
    r.raise_for_status() # not 200, raise error automatically
    r.encoding = r.apparent_encoding
    return r.text
  except:
    return 'FINDING ERRORS!'

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

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

請求方法
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)

**kwarges 控制訪問參數(shù),均為可選項

params: 字典或者字節(jié)序列智袭,作為參數(shù)增加到url中

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

data:字典或者字符串奔缠,向data域賦值

kv={'key1':'value1', 'key2':'value2'}
r = requests.request('GET', 'http://python123', data=kv)

json:字典,向json域賦值

kv={'key1':'value1', 'key2':'value2'}
r = requests.request('GET', 'http://python123', json=kv)

其它還有headers补履,cookies添坊, auth, files箫锤, timeout贬蛙, proxis等

1.5 requests.get(url)

r = requests.get(url, params = None, **kwargs)
url: 獲取頁面的url鏈接
params: url中的額外參數(shù),字典或字節(jié)流格式谚攒,可選
**kwargs: 12個控制訪問的參數(shù)

獲取HTML網(wǎng)頁的主要方法阳准,對于與HTTP的GET
首先構(gòu)造一個向服務(wù)器請求資源的Request對象
結(jié)果返回一個包含服務(wù)器資源的Response類

import requests
r = response.get(''http://www.baidu.com'')
print(r.status_code)
print(r.headers)
print(type(r))

status_code :如果返回 200,表示訪問成功
type(r): requests.models.Response
r.headers: 顯示頭文件

1.6 requests.head(url)

只是顯示頭部信息,所花費流量信息比較少

import requests
r = requests.head('http://www.baidu.com')
print(r.headers)
print(r.text)

結(jié)果顯示print(r.text)為None

1.7 requests.post(url)

向URL POST一個字典自動編碼為form(表單)
向URL POST一個字符串自動編碼為data

import requests
payload = {'key1':'value1', 'key2':'value2'}
r = requests.post('http://httpbin.org/post', data = payload)
print (r.text)
{
'form':{
  'key2': 'valu2'
  'key1' : 'value1'
 }
}
import requests
payload = {'key1':'value1', 'key2':'value2'}
r = requests.post('http://httpbin.org/post', data = 'ABC')
print (r.text)
{
  'data': 'ABC'
  'form':{
 }
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馏臭,一起剝皮案震驚了整個濱河市野蝇,隨后出現(xiàn)的幾起案子讼稚,更是在濱河造成了極大的恐慌,老刑警劉巖绕沈,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锐想,死亡現(xiàn)場離奇詭異,居然都是意外死亡乍狐,警方通過查閱死者的電腦和手機赠摇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浅蚪,“玉大人藕帜,你說我怎么就攤上這事∠О粒” “怎么了洽故?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盗誊。 經(jīng)常有香客問我时甚,道長,這世上最難降的妖魔是什么哈踱? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任撞秋,我火速辦了婚禮,結(jié)果婚禮上嚣鄙,老公的妹妹穿的比我還像新娘。我一直安慰自己串结,他們只是感情好哑子,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肌割,像睡著了一般卧蜓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上把敞,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天弥奸,我揣著相機與錄音,去河邊找鬼奋早。 笑死盛霎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耽装。 我是一名探鬼主播愤炸,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掉奄!你這毒婦竟也來了规个?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诞仓,沒想到半個月后缤苫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡墅拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年活玲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帜矾。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡翼虫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屡萤,到底是詐尸還是另有隱情珍剑,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布死陆,位于F島的核電站招拙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏措译。R本人自食惡果不足惜别凤,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望领虹。 院中可真熱鬧规哪,春花似錦、人聲如沸塌衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽最疆。三九已至杯巨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間努酸,已是汗流浹背服爷。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留获诈,地道東北人仍源。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像舔涎,于是被迫代替她去往敵國和親镜会。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理终抽,服務(wù)發(fā)現(xiàn)戳表,斷路器桶至,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 安裝 pip install requests Response對象 Response對象包含服務(wù)器返回的所有信息...
    紅茶紳士閱讀 1,230評論 0 2
  • PS:文章摘自下面這位大神的鏈接。 作者:AlexMercer313 鏈接:https://www.jianshu...
    蕭十一郎456閱讀 1,275評論 0 2
  • 一匾旭、概述 如果說利潤表是公司的外在肌肉镣屹,資產(chǎn)負(fù)債表是公司的骨架,那么現(xiàn)金流量表就是公司的血液价涝,沒有足夠的血液女蜈,在強...
    伍七九閱讀 482評論 0 0
  • 我們公司的園子總能讓熱愛生活的人萌生愛意,尤其是愛花的人色瘩。 三月里伪窖,最西邊的兩株粉玉蘭樹里最先綻放的...
    楠英Lyn閱讀 680評論 0 0