Python - HTTP-Anfragen
Das http- oder Hyper-Text-Übertragungsprotokoll funktioniert auf dem Client-Server-Modell. Normalerweise ist der Webbrowser der Client und der Computer, auf dem sich die Website befindet, der Server. In Python verwenden wir das Anforderungsmodul zum Erstellen der http-Anforderungen. Es ist ein sehr leistungsfähiges Modul, das viele Aspekte der http-Kommunikation über die einfachen Anforderungs- und Antwortdaten hinaus verarbeiten kann. Es kann Authentifizierung, Komprimierung / Dekomprimierung, Chunked-Anfragen usw. verarbeiten.
Ein HTTP-Client sendet eine HTTP-Anforderung in Form einer Anforderungsnachricht an einen Server, die das folgende Format enthält:
- Eine Anforderungszeile
- Null oder mehr Header-Felder (Allgemein | Anforderung | Entität), gefolgt von CRLF
- Eine leere Zeile (dh eine Zeile mit nichts vor der CRLF), die das Ende der Kopfzeilenfelder angibt
- Optional ein Nachrichtentext
In den folgenden Abschnitten werden die einzelnen Entitäten erläutert, die in einer HTTP-Anforderungsnachricht verwendet werden.
Request-Line
Die Anforderungszeile beginnt mit einem Methoden-Token, gefolgt von der Anforderungs-URI und der Protokollversion, und endet mit CRLF. Die Elemente sind durch Leerzeichen SP getrennt.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Lassen Sie uns jeden der in der Anforderungszeile erwähnten Teile diskutieren.
Anforderungsmethode
Die Anfrage method gibt die Methode an, die für die durch die angegebene Ressource identifizierte Ressource ausgeführt werden soll Request-URI. Die Methode unterscheidet zwischen Groß- und Kleinschreibung und sollte immer in Großbuchstaben angegeben werden. In der folgenden Tabelle sind alle in HTTP / 1.1 unterstützten Methoden aufgeführt.
SN | Methode und Beschreibung |
---|---|
1 | GET Die GET-Methode wird verwendet, um Informationen von dem angegebenen Server unter Verwendung eines bestimmten URI abzurufen. Anforderungen, die GET verwenden, sollten nur Daten abrufen und keine anderen Auswirkungen auf die Daten haben. |
2 | HEAD Wie GET, überträgt jedoch nur die Statuszeile und den Header-Bereich. |
3 | POST Eine POST-Anforderung wird verwendet, um Daten an den Server zu senden, z. B. Kundeninformationen, Datei-Upload usw. mithilfe von HTML-Formularen. |
4 | PUT Ersetzt alle aktuellen Darstellungen der Zielressource durch den hochgeladenen Inhalt. |
5 | DELETE Entfernt alle aktuellen Darstellungen der vom URI angegebenen Zielressource. |
6 | CONNECT Richtet einen Tunnel zum Server ein, der durch einen bestimmten URI identifiziert wird. |
7 | OPTIONS Beschreiben der Kommunikationsoptionen für die Zielressource. |
8 | TRACE Führt einen Nachrichtenschleifen-Rücktest zusammen mit dem Pfad zur Zielressource durch. |
Request-URI
Der Anforderungs-URI ist eine einheitliche Ressourcenkennung und gibt die Ressource an, auf die die Anforderung angewendet werden soll. Im Folgenden sind die am häufigsten verwendeten Formulare zum Angeben eines URI aufgeführt:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | Methode und Beschreibung |
---|---|
1 | Das Sternchen *wird verwendet, wenn eine HTTP-Anforderung nicht für eine bestimmte Ressource, sondern für den Server selbst gilt, und ist nur zulässig, wenn die verwendete Methode nicht unbedingt für eine Ressource gilt. Zum Beispiel: OPTIONS * HTTP/1.1 |
2 | Das absoluteURIwird verwendet, wenn eine HTTP-Anforderung an einen Proxy gesendet wird. Der Proxy wird aufgefordert, die Anforderung oder den Dienst aus einem gültigen Cache weiterzuleiten und die Antwort zurückzugeben. Zum Beispiel: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | Die häufigste Form der Anforderungs-URI ist die, mit der eine Ressource auf einem Ursprungsserver oder Gateway identifiziert wird. Beispielsweise würde ein Client, der eine Ressource direkt vom Ursprungsserver abrufen möchte, eine TCP-Verbindung zu Port 80 des Hosts "www.w3.org" herstellen und die folgenden Zeilen senden: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org Beachten Sie, dass der absolute Pfad nicht leer sein darf. Wenn in der ursprünglichen URI keine vorhanden ist, MUSS diese als "/" (Serverstamm) angegeben werden. |
Verwenden von Python-Anforderungen
Wir werden die Modulanforderungen verwenden, um mehr über die http-Anforderung zu erfahren.
pip install requests
Im folgenden Beispiel sehen wir einen Fall einer einfachen GET-Anforderung und drucken das Ergebnis der Antwort aus. Wir drucken nur die ersten 300 Zeichen.
# How to make http request
import requests as req
r = req.get('http://www.tutorialspoint.com/python/')
print(r.text)[0:300]
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial