Я использую потрясающую библиотеку запросов Python . Я заметил, что в прекрасной документации есть много примеров того, как что-то делать, без объяснения причины . Например, оба r.text
и r.content
показаны в качестве примеров того, как получить ответ сервера. Но где объясняется, что делают эти свойства? Например, когда я выберу одно из них? Я вижу, что thar иногдаr.text
возвращает объект Unicode , и полагаю, что для нетекстового ответа будет разница. Но где все это задокументировано? Обратите внимание, что в связанном документе говорится:
Вы также можете получить доступ к телу ответа в байтах для нетекстовых запросов:
Но затем мы покажем пример текстового ответа! Я могу только предположить, что приведенная выше цитата означает non-text responses
вместо этого non-text requests
, поскольку нетекстовый запрос не имеет смысла в HTTP.
Короче говоря, где находится надлежащая документация по библиотеке, в отличие от (отличного) учебника на сайте Python Requests?
источник
Ответы:
В интерфейсе разработчика есть более подробная информация:
r.text
- это содержимое ответа в Юникоде, аr.content
это содержимое ответа в байтах.источник
r.text
, будет предпочтительнее для текстовых ответов, таких как документ HTML или XML, иr.content
предпочтительнее для «двоичных» типов файлов, таких как изображение или файл PDF.r.content
, а не в скрытом видеr.text
.r.text
и вr.content
виде текста. Почему бы не отображатьr.content
как текст иr.text
как биты (если это по сути)?Из документации ясно, что r.content
Если вы читаете дальше по странице, он обращается, например, к файлу изображения
источник
b
предыдущий пример с текстом «для нетекстовых запросов», что означает, что объект является байтовым объектом. Непонятно, почему байты отображаются как текст, возможно, это еще одна «тонкость» Python, но в данном контексте это сбивает с толку. Спасибо.requests
в python 3 на странице page.content дает эту ошибку:if 'rss' in page.content:
->TypeError: a bytes-like object is required, not 'str'