requests 學(xué)習(xí)筆記之 高級用法

# 高級用法
# 一过椎,會話對象
#創(chuàng)建一個會話對象仲闽,會話對象讓你能夠跨請求保持某些參數(shù)献宫。
# 一涌攻、在兩個請求間使用會話保持一些 cookie逗概,兩個請求都可以使用。
# s1 = requests.Session()
# print s1.get('http://httpbin.org/cookies/set/sessioncookie/123456789').text
# print s1.get("http://httpbin.org/cookies").text

# 二袁波、方法級別的參數(shù)也不會被跨請求保持耻蛇。例如第一個請求方法帶的參數(shù)cookies在第二個請求方法中不能使用,即使請求的是同一個地址朝蜘。
# s2 = requests.Session()
# response = s2.get('http://httpbin.org/cookies', cookies={'test_cookie':"timeashore"})
# print response.text
# response = s2.get('http://httpbin.org/cookies')
# print response.text

# 三恶迈、會話也可用來為請求方法提供缺省數(shù)據(jù)。
# s = requests.Session()
# s.auth = ('user', 'pass')
# s.headers.update({'x-test': 'true'})
# print s.get('http://httpbin.org/headers', headers={'x-test2': 'true',"Content-Length":"None"}).headers

# 會話也可以這樣使用:先打開文件一樣創(chuàng)建一個會話對象s谱醇,然后再進行操作暇仲,這樣在with塊退出后會話將會被關(guān)閉
# with requests.Session() as s:
#     s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 從字典參數(shù)中移除一個值也很簡單步做,在方法層的字典參數(shù)中將那個鍵設(shè)置為None即可。

# 三奈附、發(fā)出請求后收到服務(wù)器的響應(yīng)response中的內(nèi)容
# response = requests.get("http://www.baidu.com")
# 主要做了兩件事:
# (1)創(chuàng)建一個Request對象辆床,發(fā)送Request對象到服務(wù)器。(發(fā)請求)
# (2)創(chuàng)建一個Response對象接收服務(wù)器響應(yīng)內(nèi)容(包括服務(wù)器返回的所有信息桅狠,也包括創(chuàng)建的Request對象信息)
# 訪問response頭信息:
# print response.headers
# 訪問請求頭信息
# print response.request.headers

# 四讼载、SSL證書驗證 - 客戶端證書 - CA證書
# Requests 可以為 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器一樣中跌。
# SSL 驗證默認(rèn)是開啟的( 參數(shù)verify默認(rèn)為True)咨堤,如果證書驗證失敗,Requests 會拋出 SSLError漩符。

# print requests.get('https://github.com', verify=True)
# 也可以為 verify 傳入 CA_BUNDLE 文件的路徑一喘,或者包含可信任 CA 證書文件的文件夾路徑
# print requests.get('https://github.com', verify='/path/to/certfile')
# CA證書:Requests 默認(rèn)附帶了一套它信任的根證書,來自于 Mozilla trust store嗜暴。


# 五凸克、響應(yīng)體內(nèi)容工作流
# 默認(rèn)情況下,當(dāng)發(fā)請求后闷沥,響應(yīng)體(response.text,response.content,response.body,...)會立即被下載萎战。
# 但是可以設(shè)置 stream=True 參數(shù)推遲下載時間,直到訪問到了某一個內(nèi)容才會被下載舆逃。此時僅有響應(yīng)頭被下載下來了蚂维,連接保持打開狀態(tài)。
# response = requests.get("http://www.baidu.com", stream=True)  #響應(yīng)體暫未下載
# print response.text  #響應(yīng)體下載

# 注意:如果你在請求中把 stream 設(shè)為 True路狮,Requests 無法將連接釋放回連接池虫啥,除非你 消耗了所有的數(shù)據(jù),或者調(diào)用了 Response.close奄妨。
# 因此在設(shè)置了stream參數(shù)為True時涂籽,最好在with塊中發(fā)請求操作,這樣保證請求一定會被關(guān)閉砸抛。
# with requests.get("http://www.baidu.com",stream=True) as response:
#     print response.content


# 六评雌、流式上傳
# Requests支持流式上傳,這允許你發(fā)送大的數(shù)據(jù)流或文件而無需先把它們讀入內(nèi)存锰悼。
# 要使用流式上傳柳骄,僅需為你的請求體提供一個類文件對象即可:
# with open('massive-body') as fp:
#     requests.post(url, data=fp)
# 警告:強烈建議你用二進制模式(binary mode)打開文件团赏。
# 這是因為 requests 可能會為你提供 header 中的 Content-Length箕般,在這種情況下該值會被設(shè)為文件的字節(jié)數(shù)。
# 如果你用文本模式打開文件舔清,就可能碰到錯誤丝里。


# (比較有用)
# 七曲初、事件掛鉤 : 可以用來操控部分請求過程,或信號事件處理
# 傳遞一個字典給 hooks 請求參數(shù)為每個請求分配一個鉤子函數(shù)
# def a(response,*args, **kwargs):
#     #對于爬蟲杯聚,可以在這個回調(diào)函數(shù)中解析源碼提取內(nèi)容
#     print response.text
# def b(response,*args, **kwargs):
#     print response.text
#     print response.encoding
# requests.get("http://www.baidu.com",hooks=dict(response=a))   #設(shè)置回調(diào)函數(shù)a()
# requests.get("http://www.baidu.com",hooks=dict(response=b))   #設(shè)置回調(diào)函數(shù)b()



# 八臼婆、代理
#(1)如果需要使用代理,通過為任意請求方法設(shè)置 proxies 參數(shù)來配置
# proxie = {
#   "http": "http://10.10.1.10:3128",
#   "https": "http://10.10.1.10:1080",
# }
# requests.get(url, proxies=proxie)

# (2)也可以通過環(huán)境變量 HTTP_PROXY 和 HTTPS_PROXY 來配置代理幌绍。
# export HTTP_PROXY="http://10.10.1.10:3128"
# export HTTPS_PROXY="http://10.10.1.10:1080"
# requests.get(url)

# (3)若你的代理需要使用HTTP Basic Auth颁褂,可以使用 http://user:password@host/ 語法:
# proxies = {
#     "http": "http://user:pass@10.10.1.10:3128/",
# }

# (4)要為某個特定的連接方式或者主機設(shè)置代理,使用 scheme://hostname 作為 key傀广, 它會針對指定的主機和連接方式進行匹配颁独。
# proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}


# 九、SOCKS 協(xié)議代理
# 除了基本的 HTTP 代理伪冰,Request 還支持 SOCKS 協(xié)議的代理誓酒。
# 安裝:pip install requests[socks]
# 使用 SOCKS 代理和使用 HTTP 代理一樣
# proxie = {
#     'http': 'socks5://user:pass@host:port',
#     'https': 'socks5://user:pass@host:port'
# }
# requests.get(url,proxies=proxie)


# 十、定制HTTP動詞
# 常規(guī)的HTTP動詞有GET贮聂、OPTIONS靠柑、HEAD、POST吓懈、PUT歼冰、PATCH、DELETE等
# 有時候你會碰到一些服務(wù)器耻警,處于某些原因停巷,它們要求用戶使用上述 HTTP 動詞之外的定制動詞。
# requests 使用內(nèi)建的 .request 方法就可以了榕栏。例如某臺服務(wù)器要求使用 MKCOL 方法畔勤。
# response = requests.request('MKCOL', url, data=data)
# response.status_code

快速上手/基本使用:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
高級用法:http://docs.python-requests.org/zh_CN/latest/user/advanced.html
API:http://docs.python-requests.org/zh_CN/latest/api.html

注:原創(chuàng)文章,未經(jīng)作者本人同意扒磁,禁止轉(zhuǎn)載庆揪。
原文地址:http://www.reibang.com/p/94e23184b914

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妨托,隨后出現(xiàn)的幾起案子缸榛,更是在濱河造成了極大的恐慌,老刑警劉巖兰伤,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件内颗,死亡現(xiàn)場離奇詭異,居然都是意外死亡敦腔,警方通過查閱死者的電腦和手機均澳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人找前,你說我怎么就攤上這事糟袁。” “怎么了躺盛?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵项戴,是天一觀的道長。 經(jīng)常有香客問我槽惫,道長周叮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任界斜,我火速辦了婚禮则吟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锄蹂。我一直安慰自己氓仲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布得糜。 她就那樣靜靜地躺著敬扛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朝抖。 梳的紋絲不亂的頭發(fā)上啥箭,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音治宣,去河邊找鬼急侥。 笑死,一個胖子當(dāng)著我的面吹牛侮邀,可吹牛的內(nèi)容都是我干的坏怪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼绊茧,長吁一口氣:“原來是場噩夢啊……” “哼铝宵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起华畏,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鹏秋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亡笑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣夷,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年仑乌,在試婚紗的時候發(fā)現(xiàn)自己被綠了百拓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琴锭。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耐版,靈堂內(nèi)的尸體忽然破棺而出祠够,到底是詐尸還是另有隱情压汪,我是刑警寧澤粪牲,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站止剖,受9級特大地震影響腺阳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜穿香,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一亭引、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皮获,春花似錦焙蚓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雁歌,卻和暖如春宏浩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背靠瞎。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工比庄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏盐。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓佳窑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親父能。 傳聞我的和親對象是個殘疾皇子华嘹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359