Estoy usando la fabulosa biblioteca Python Requests . Noto que la buena documentación tiene muchos ejemplos de cómo hacer algo sin explicar el por qué . Por ejemplo, ambos r.texty r.contentse muestran como ejemplos de cómo obtener la respuesta del servidor. Pero, ¿dónde se explica qué hacen estas propiedades? Por ejemplo, ¿cuándo elegiría uno sobre el otro? Veo que r.texta veces devuelve un objeto Unicode , y supongo que habría una diferencia para una respuesta sin texto. Pero, ¿dónde está documentado todo esto? Tenga en cuenta que el documento vinculado dice:
También puede acceder al cuerpo de la respuesta como bytes, para solicitudes que no sean de texto:
¡Pero luego pasa a mostrar un ejemplo de una respuesta de texto! Solo puedo suponer que la cita anterior significa decir en non-text responseslugar de non-text requests, ya que una solicitud sin texto no tiene sentido en HTTP.
En resumen, ¿dónde está la documentación adecuada de la biblioteca, a diferencia del (excelente) tutorial en el sitio de Python Requests?
fuente

Respuestas:
La interfaz de desarrollador tiene más detalles:
r.textes el contenido de la respuesta en Unicode yr.contentes el contenido de la respuesta en bytes.fuente
r.textse preferiría para respuestas textuales, como un documento HTML o XML, yr.contentsería preferible para tipos de archivo "binarios", como una imagen o un archivo PDF.r.content, no encubiertosr.text.r.textyr.contentcomo textos. ¿Por qué no mostrarser.contentcomo texto yr.textcomo bits (si eso es lo que es inherentemente)?Parece claro a partir de la documentación que r.content
Si lee más abajo en la página, se trata, por ejemplo, de un archivo de imagen.
fuente
bprecede al primer ejemplo con el texto "para solicitudes que no son de texto", lo que significa que el objeto es un objeto de bytes. No está claro por qué los bytes se muestran como texto, tal vez esa sea otra 'sutileza' de Python, pero es confuso en este contexto. Gracias.requestsen python 3 en page.content da este error:if 'rss' in page.content:->TypeError: a bytes-like object is required, not 'str'