Ich benutze die großartige Python Requests- Bibliothek. Ich stelle fest, dass die gute Dokumentation viele Beispiele dafür enthält, wie man etwas macht, ohne das Warum zu erklären . Beispielsweise werden beide r.text
und r.content
als Beispiele für das Abrufen der Serverantwort angezeigt . Aber wo wird erklärt, was diese Eigenschaften bewirken? Wann würde ich zum Beispiel einen über den anderen wählen? Ich sehe, dass thar manchmalr.text
ein Unicode-Objekt zurückgibt , und ich nehme an, dass es einen Unterschied für eine Nicht-Text-Antwort geben würde. Aber wo ist das alles dokumentiert? Beachten Sie, dass im verknüpften Dokument Folgendes angegeben ist:
Sie können für Nicht-Text-Anforderungen auch als Bytes auf den Antworttext zugreifen:
Aber dann zeigt es ein Beispiel für eine Textantwort! Ich kann nur annehmen, dass das obige Zitat bedeutet, non-text responses
statt zu sagen non-text requests
, da eine Nicht-Text-Anfrage in HTTP keinen Sinn ergibt.
Kurz gesagt, wo ist die richtige Dokumentation der Bibliothek im Gegensatz zum (ausgezeichneten) Tutorial auf der Python Requests-Site?
quelle
Antworten:
Die Entwickleroberfläche enthält weitere Details:
r.text
ist der Inhalt der Antwort in Unicode undr.content
ist der Inhalt der Antwort in Bytes.quelle
r.text
für Textantworten wie ein HTML- oder XML-Dokument undr.content
für "binäre" Dateitypen wie ein Bild oder eine PDF-Datei bevorzugt.r.content
durchzuführenr.text
. Daher sollten sie dem Rohdaten und nicht dem Verdeckten zugeführt werden .r.text
undr.content
als Texte anzeigt . Warum nichtr.content
als Text undr.text
als Bits anzeigen (wenn es das ist, was es von Natur aus ist)?Aus der Dokumentation geht hervor, dass r.content
Wenn Sie weiter unten auf der Seite lesen, wird beispielsweise eine Bilddatei angesprochen
quelle
b
vor dem ersten Beispiel mit dem Text "für Nicht-Text-Anfragen", was bedeutet, dass das Objekt ein Byte-Objekt ist. Es ist nicht klar, warum die Bytes als Text angezeigt werden, vielleicht ist das eine andere Python-Nizza, aber es ist in diesem Zusammenhang verwirrend. Vielen Dank.requests
in Python 3 auf page.content gibt diesen Fehler:if 'rss' in page.content:
->TypeError: a bytes-like object is required, not 'str'