Abrufen von Daten von einer URL in Python
Eine URL oder ein Uniform Resource Locator ist eine gültige und eindeutige Webadresse, die auf eine Ressource über das Internet verweist. Diese Ressource kann eine einfache Textdatei, eine ZIP-Datei, eine exe
-Datei, ein Video, ein Bild oder eine Webseite sein.
Im Fall einer Webseite wird der HTML- oder der Hypertext Markup Language-Inhalt abgerufen. In diesem Artikel wird gezeigt, wie Sie diese HTML- oder Hypertext Markup Language-Daten mit Python von einer URL abrufen.
Abrufen von Daten von einer URL mithilfe des Moduls requests
in Python
Python hat ein requests
-Modul, das einfach HTTP-Anfragen (Hypertext Transfer Protocol) sendet. Dieses Modul kann verwendet werden, um den HTML-Inhalt oder einen beliebigen Inhalt von einer gültigen URL abzurufen.
Das Modul requests
hat eine Methode get()
, mit der wir Daten von einer URL abrufen können. Diese Methode akzeptiert eine url
als Argument und gibt ein requests.Response
-Objekt zurück.
Dieses Objekt requests.Response
enthält Details über die Antwort des Servers auf den gesendeten HTTP-Request. Wenn dieser Methode get()
eine ungültige URL übergeben wird, löst die Methode get()
eine ConnectionError
-Ausnahme aus.
Wenn Sie sich bezüglich der Gültigkeit der URL nicht sicher sind, wird dringend empfohlen, die Blöcke try
und except
zu verwenden. Schließen Sie einfach den Methodenaufruf get()
in einen try
- und except
-Block ein. Dies wird im kommenden Beispiel dargestellt.
Lassen Sie uns nun verstehen, wie Sie diese Funktion verwenden, um HTML-Inhalt oder beliebige Daten von einer gültigen URL abzurufen. Siehe den folgenden Code für dasselbe.
Weitere Informationen zum Objekt requests.Response
finden Sie in der offiziellen Dokumentation hier.
import requests
try:
url = "https://www.lipsum.com/feed/html"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
Ausgabe:
HTML:
...
Beachten Sie, dass ...
den HTML-Inhalt darstellt, der von der URL abgerufen wurde. Der HTML-Inhalt wurde in der obigen Ausgabe nicht angezeigt, da er zu groß war.
Wenn die URL fehlerhaft ist, führt der obige Code den Code innerhalb des except
-Blocks aus. Der folgende Code zeigt, wie es funktioniert.
import requests
try:
url = "https://www.thisisafaultyurl.com/faulty/url/"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
Ausgabe:
Invalid URL or some error occurred while making the GET request to the specified URL
Einige Webseiten erlauben aus Sicherheitsgründen keine GET
-Anfragen zum Abrufen ihrer Inhalte. In solchen Fällen können wir die Methode post()
aus dem Modul requests
verwenden.
Wie der Name schon sagt, sendet diese Methode POST
-Anfragen an eine gültige URL. Diese Methode akzeptiert zwei Argumente, nämlich url
und data
.
Die url
ist die Ziel-URL und data
akzeptiert ein Dictionary mit Header-Details in Form von Schlüssel-Wert-Paaren. Die Header-Details können ein API- oder Application Programming Interface-Schlüssel, ein CSRF- oder Cross-Site-Request-Forgery-Token usw. sein.
Der Python-Code für einen solchen Fall wäre wie folgt.
import requests
try:
url = "https://www.thisisaurl.com/that/accepts/post/requests/"
payload = {
"api-key": "my-api-key",
# more key-value pairs
}
r = requests.post(url, data=payload)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the POST request to the specified URL"
)