dotancohen
dotancohen

Reputation: 31501

What is the difference between 'content' and 'text'

I am using the terrific Python Requests library. I notice that the fine documentation has many examples of how to do something without explaining the why. For instance, both r.text and r.content are shown as examples of how to get the server response. But where is it explained what these properties do? For instance, when would I choose one over the other? I see thar r.text returns a unicode object sometimes, and I suppose that there would be a difference for a non-text response. But where is all this documented? Note that the linked document does state:

You can also access the response body as bytes, for non-text requests:

But then it goes on to show an example of a text response! I can only suppose that the quote above means to say non-text responses instead of non-text requests, as a non-text request does not make sense in HTTP.

In short, where is the proper documentation of the library, as opposed to the (excellent) tutorial on the Python Requests site?

Upvotes: 210

Views: 116421

Answers (3)

Akshay Katiha
Akshay Katiha

Reputation: 470

To some extent, text is nothing, but a sugar-coated version of content.

import requests
response = requests.get("https://httpbin.org/get")
response.text == response.content.decode(encoding == response.encoding)
True

All internet content is received in the form of bytes. Choose response.text for textual responses and use response.content for binary files like images or PDF

Upvotes: 3

Gary Kerr
Gary Kerr

Reputation: 14440

The requests.Response class documentation has more details:

r.text is the content of the response in Unicode, and r.content is the content of the response in bytes.

Upvotes: 233

PyNEwbie
PyNEwbie

Reputation: 4940

It seems clear from the documentation is that r.content

You can also access the response body as bytes, for non-text requests:

 >>> r.content

If you read further down the page it addresses for example an image file

Upvotes: 15

Related Questions