'콘텐츠'와 '텍스트'의 차이점은 무엇입니까?


122

훌륭한 Python 요청 라이브러리를 사용하고 있습니다. 나는 것을 알 미세 문서는 많은 예제가 어떻게 을 설명하지 않고 일을하는 이유를 . 예를 들어, 모두 r.text와이 r.content예로 표시하는 방법 서버 응답을 얻을 수 있습니다. 그러나 이러한 속성이 수행하는 작업은 어디에 설명되어 있습니까? 예를 들어, 언제 다른 하나를 선택해야합니까? thar r.text때때로 유니 코드 객체를 반환하는 것을보고 텍스트가 아닌 응답에 차이가있을 것이라고 생각합니다. 그러나이 모든 것은 어디에 문서화되어 있습니까? 링크 된 문서에는 다음과 같은 내용이 있습니다.

텍스트가 아닌 요청의 경우 응답 본문에 바이트로 액세스 할 수도 있습니다.

그러나 텍스트 응답의 예를 보여줍니다! 위의 인용문은 텍스트가 아닌 요청이 HTTP에서 의미가 없기 때문에 non-text responses대신을 의미한다고 가정 할 수 있습니다 non-text requests.

요컨대, Python Requests 사이트 의 (우수한) 튜토리얼 과 달리 라이브러리에 대한 적절한 문서 는 어디에 있습니까?


답변:


144

개발자 인터페이스는 자세한 내용이 있습니다 :

r.text유니 코드 r.content의 응답 내용이고 바이트 단위의 응답 내용입니다.


46
그리고 언제 둘 중 하나를 선택 하시겠습니까?
multigoodverse

13
@multigoodverse : 아마도 r.textHTML 또는 XML 문서와 같은 텍스트 응답에 r.content선호되고 이미지 또는 PDF 파일과 같은 "이진"파일 유형에 선호 될 것입니다.
dotancohen

5
@dotancohen HTML과 XML은 데이터의 선언을 사용하여 자체 디코딩을 수행하므로 은폐 된 것이 r.content아닌 원시 데이터를 제공해야합니다 r.text.
tdelaney

보다 일반적으로 단일 응답에는 중첩되거나 다중 부분 콘텐츠 (예 : 첨부 파일이있는 이메일 메시지)가 포함될 수 있으며 각 부분은 다른 방식으로 인코딩 될 수 있습니다. 바이트 스트림에 액세스하지 않고 이러한 응답을 처리하는 것은 불가능하지만 올바르게 디코딩 된 유니 코드 텍스트를 원하는 일반적인 경우와는 거리가 멀습니다.
holdenweb

파이썬 인터프리터가 r.text와 둘 다 r.content텍스트로 표시하는 이유 . r.content텍스트 및 r.text비트로 표시하지 않는 이유 는 무엇입니까?
Arnb

11

문서에서 분명해 보이는 것은 r.content

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

 >>> r.content

페이지 아래를 더 읽으면 예를 들어 이미지 파일을 처리합니다.


2
감사합니다. 이제 b첫 번째 예제 앞에 "for non-text requests"라는 텍스트가있는 작은 것을 볼 수 있습니다. 즉, 개체가 bytes 개체임을 의미합니다. 바이트가 텍스트로 표시되는 이유는 명확하지 않습니다. 아마도 파이썬의 또 다른 '좋아요'일 것입니다. 그러나이 문맥에서는 혼란 스럽습니다. 감사.
dotancohen 2013-06-09

1
이것은 python 2.x보다 python 3.x에서 더 중요해 보입니다. 사용 requests이 오류가 page.content에 파이썬 3에서 제공합니다 if 'rss' in page.content:->TypeError: a bytes-like object is required, not 'str'
마크 Maxmeister
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.