python requests的content和text方法的區別
阿新 • • 發佈:2019-01-29
- 問題:
一直在想requests的content和text屬性的區別,從print 結果來看是沒有任何區別的
看下原始碼:
@property
def text(self):
"""Content of the response, in unicode.
If Response.encoding is None, encoding will be guessed using
``chardet``.
The encoding of the response content is determined based solely on HTTP
headers, following RFC 2616 to the letter. If you can take advantage of
non-HTTP knowledge to make a better guess at the encoding, you should
set ``r.encoding`` appropriately before accessing this property.
"""
#content的完整程式碼就不貼了。
@property
def content(self):
"""Content of the response, in bytes."""
- 結論是:
resp.text返回的是Unicode型的資料。
resp.content返回的是bytes型也就是二進位制的資料。
也就是說,如果你想取文字,可以通過r.text。
如果想取圖片,檔案,則可以通過r.content。
(resp.json()返回的是json格式資料)
- 舉個栗子
# 例如下載並儲存一張圖片
import requests
jpg_url = 'http://img2.niutuku.com/1312/0804/0804-niutuku.com-27840.jpg'
content = requests.get(jpg_url).content
with open('demo.jpg', 'wb') as fp:
fp.write(content)