Python Requests簡單運用

Requests簡介

Requests 是使用 Apache2 Licensed 許可證的 HTTP 庫。比Python 標準庫中的 urllib2 模塊功能強大。

Requests 使用的是 urllib3,因此繼承了它的所有特性。Requests 支持 HTTP 連接保持和連接池,支持使用 cookie 保持會話,支持文件上傳,支持自動確定響應內容的編碼,支持國際化的 URL 和 POST 數據自動編碼。

功能特性

Requests 完全滿足如今網絡的需求。

  • 國際化域名和 URLs
  • Keep-Alive & 連接池
  • 持久的 Cookie 會話
  • 類瀏覽器式的 SSL 加密認證
  • 基本/摘要式的身份認證
  • 優雅的鍵/值 Cookies
  • 自動解壓
  • Unicode 編碼的響應體
  • 多段文件上傳
  • 連接超時
  • 支持 .netrc
  • 適用於 Python 2.6—3.4
  • 線程安全

牛刀小試

>>> import requests
>>> r = requests.get('http://www.baidu.com')   # 發送請求
>>> r.status_code                               # 網頁狀態碼
200
>>> r.headers['content-type']                  #響應頭內容
'text/html; charset=utf-8'
>>> r.encoding                                 #獲取網頁編碼
'utf-8'
>>> r.text                                     #獲取響應網頁的內容
'<!DOCTYPE html><!--STATUS OK--><html><head>...

爲URL傳遞參數

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get("http://httpbin.org/get", params=payload)
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text

超時

你可以告訴requests在經過以 timeout 參數設定的秒數時間之後停止等待響應:

>>> requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

代理

如果需要使用代理,你可以通過爲任意請求方法提供 proxies 參數來配置單個請求:

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

錯誤與異常

遇到網絡問題(如:DNS查詢失敗、拒絕連接等)時,Requests會拋出一個 ConnectionError 異常。
遇到罕見的無效HTTP響應時,Requests則會拋出一個 HTTPError 異常。
若請求超時,則拋出一個 Timeout 異常。
若請求超過了設定的最大重定向次數,則會拋出一個 TooManyRedirects 異常。
所有Requests顯式拋出的異常都繼承自 requests.exceptions.RequestException 。

更多介紹可參考官方文檔

整理自網絡

svoid
2015-03-14
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章