Ich versuche, das Ergebnis einer HEAD-Anfrage zu analysieren, die mit Python Anfragen Bibliothek, aber scheint nicht auf den Inhalt der Antwort zuzugreifen.
Laut den Dokumenten sollte ich in der Lage sein, auf den Inhalt von requests.Response zuzugreifen. Text. Dies funktioniert für mich bei GET-Anfragen, gibt aber None bei HEAD-Anfragen zurück.
GET-Anfrage (funktioniert)
%Vor% content = <html>...</html>
HEAD-Anfrage (kein Inhalt)
%Vor% content = None
BEARBEITEN
OK Ich habe schnell festgestellt, dass die HEAD-Anfrage keine Content-Only-Header zurückgeben soll. Aber heißt das, dass, um auf Dinge zuzugreifen, die im <head>
-Tag einer Seite gefunden wurden, wie <link>
und <meta>
-Tags, das man das ganze Dokument holen muss?
Nach der Definition enthalten die Antworten auf HEAD-Anfragen keine Nachricht -Körper.
Senden Sie eine GET-Anfrage, wenn Sie einen Antworttext erhalten möchten. Senden Sie eine HEAD-Anfrage Wenn Sie interessiert sind, sind Sie nur an dem Antwortstatuscode und den Kopfzeilen interessiert.
HTTP überträgt beliebigen Inhalt; Der HTTP-Begriff header ist völlig unabhängig von einem HTML-Code <head>
. HTTP kann jedoch empfohlen werden, nur einen Teil des Dokuments herunterzuladen. Wenn Sie die Länge des Codes HTML <head>
(oder eine obere Grenze dafür) kennen, können Sie ein HTTP-Bereich Header in Ihrer Anfrage, die den Remote-Server darauf hinweist, nur eine bestimmte Anzahl von Bytes zurückzugeben. Wenn der Remote-Server HTTP-Bereiche unterstützt, wird er die reduzierte Antwort liefern.
Ein HEAD hat keinen Inhalt! Probieren Sie response.headers
- das ist wahrscheinlich der Ort, an dem die Aktion stattfindet. Eine HTTP HEAD-Anforderung ruft nicht das Element <head>
der HTML-Antwort ab, die Sie von einer GET-Anforderung erhalten würden. Ich denke, das ist dein Fehler.
HEAD Antworten haben keinen Körper. Sie geben nur HTTP-Header zurück, die Sie mit einer GET-Anfrage erhalten würden.
Tags und Links python python-requests head http-request