1. 程式人生 > >python requests的content和text方法的區別

python requests的content和text方法的區別

  • 問題:

一直在想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)