Używam wspaniałej biblioteki Python Requests . Zauważyłem, że dobra dokumentacja zawiera wiele przykładów tego, jak coś zrobić bez wyjaśniania dlaczego . Na przykład, zarówno r.text
i r.content
są przedstawione jako przykłady w jaki sposób uzyskać odpowiedź serwera. Ale gdzie jest wyjaśnione, co robią te właściwości? Na przykład, kiedy wybrałbym jedną z nich? Widzę, że thar czasamir.text
zwraca obiekt Unicode i przypuszczam, że byłaby różnica w odpowiedzi nietekstowej. Ale gdzie jest to wszystko udokumentowane? Zwróć uwagę, że powiązany dokument podaje:
Możesz również uzyskać dostęp do treści odpowiedzi w postaci bajtów, w przypadku żądań nietekstowych:
Ale potem pokazuje przykład odpowiedzi tekstowej! Mogę tylko przypuszczać, że powyższy cytat oznacza non-text responses
zamiast tego powiedzieć non-text requests
, ponieważ żądanie nietekstowe nie ma sensu w HTTP.
Krótko mówiąc, gdzie jest właściwa dokumentacja biblioteki, w przeciwieństwie do (doskonałego) samouczka na stronie Python Requests?
źródło
Odpowiedzi:
Interfejs deweloper ma więcej szczegółów:
r.text
to treść odpowiedzi w formacie Unicode ir.content
jest to treść odpowiedzi w bajtach.źródło
r.text
byłby preferowany w przypadku odpowiedzi tekstowych, takich jak dokument HTML lub XML, ir.content
byłby preferowany w przypadku „binarnych” typów plików, takich jak obraz lub plik PDF.r.content
, a nie ukrytymr.text
.r.text
ir.content
jako teksty. Dlaczego nie wyświetlaćr.content
jako tekst ir.text
jako bity (jeśli tak jest z natury)?Z dokumentacji jasno wynika, że r. Treść
Jeśli czytasz dalej w dół strony, dotyczy ona na przykład pliku obrazu
źródło
b
poprzedzający pierwszy przykład z tekstem „dla żądań nietekstowych”, co oznacza, że obiekt jest obiektem bajtów. Nie jest jasne, dlaczego bajty są wyświetlane jako tekst, być może jest to kolejna „drobiazg” Pythona, ale w tym kontekście jest to mylące. Dzięki.requests
w pythonie 3 na stronie. zawartość powoduje następujący błąd:if 'rss' in page.content:
->TypeError: a bytes-like object is required, not 'str'