程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python requests 進階用法

編輯:Python

文章目錄

  • 一. 會話對象
    • 1.1會話對象可以跨請求保持某些參數,
    • 1.2 會話可以為請求方法提供缺省數據
    • 1.3 參數合並
    • 1.4 建議使用的代碼方式:上下文管理器

一. 會話對象

1.1會話對象可以跨請求保持某些參數,

會話對象具有requests API的所有方法.

>>> import requests
>>> s = requests.Session()
>>> s.get("http://httpbin.org/cookies/set/sessioncookie/123456789")
<Response [200]>
>>> r = s.get("http://httpbin.org/cookies")
>>> r.text
'{\n "cookies": {\n "sessioncookie": "123456789"\n }\n}\n'

1.2 會話可以為請求方法提供缺省數據

>>> s = requests.Session()
>>> s.auth("user", "pass")
...因為沒有真正驗證登錄, 所以會報錯...
>>> s.headers.update({
"x-test": "true"})
>>> s.get('http://httpbin.org/headers', headers={
'x-test2': 'true'})
<Response [200]>
# 此時x-test 和x-test2 都會被放入請求頭中

1.3 參數合並

傳遞給請求方法的字典都會與已設置的會話層數據合並. 方法層的參數覆蓋會話的參數. 方法級別的參數不會被跨請求保持

>>> s = requests.Session()
>>> r = s.get('http://httpbin.org/cookies', cookies={
'from-my': 'browser'})
>>> r.text
'{\n "cookies": {\n "from-my": "browser"\n }\n}\n'
>>> r = s.get('http://httpbin.org/cookies')
>>> r.text
'{\n "cookies": {}\n}\n'
>>>

1.4 建議使用的代碼方式:上下文管理器

with requests.Session() as s:
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 若是在測試環境中, 不知道將來用get post,可以這麼寫
with requests.Session() as s:
resp = s.request(method="get|post", url=url)
# 不知道返回值是什麼的情況下,可以通過content_type來判斷返回值類型
content_type = ["application/json", "application/stream", "text/explain"]

未完待續…


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved