Python requests-Modul

Python requests ist eine häufig verwendete HTTP-Anfragebibliothek, die bequem HTTP-Anfragen an Websites senden und Antworten erhalten kann.

Das requests-Modul isturllibprägnanter als das Modul.

Um HTTP-Anfragen mit requests zu senden, müssen Sie zuerst das requests-Modul importieren:

import requests

Nach dem Importieren können Sie HTTP-Anfragen senden. Verwenden Sie die von requests bereitgestellten Methoden, um eine HTTP-Anfrage an die angegebene URL zu senden, zum Beispiel:

Beispiel

# Importiere das requests-Paket
import requests

# Sende Anfrage
x = requests.get('https://www.example.com/')

# Webseiteninhalt zurückgeben
print(x.text)

Nach jedem Aufruf von requests wird ein Response-Objekt zurückgegeben. Dieses Objekt enthält bestimmte Antwortinformationen wie Statuscode, Antwort-Header, Antwortinhalt usw.:

print(response.status_code)  # 获取响应状态码
print(response.headers)  # 获取响应头
print(response.content)  # 获取响应内容

Weitere Antwortinformationen sind wie folgt:

Attribut oder Methode Beschreibung
apparent_encoding Kodierung
close() Schließt die Verbindung zum Server
content Gibt den Antwortinhalt in Bytes zurück
cookies Gibt ein CookieJar-Objekt zurück, das die vom Server gesendeten Cookies enthält
elapsed Gibt ein timedelta-Objekt zurück, das die Zeit enthält, die vom Senden der Anfrage bis zum Empfang der Antwort verstrichen ist. Dies kann verwendet werden, um die Antwortgeschwindigkeit zu testen. Zum Beispiel gibt r.elapsed.microseconds an, wie viele Mikrosekunden es dauert, bis die Antwort eintrifft.
encoding Die zum Dekodieren von r.text verwendete Kodierung
headers Gibt die Antwort-Header im Dictionary-Format zurück
history Gibt eine Liste von Antwortobjekten zurück, die den Anfrageverlauf (URL) enthalten
is_permanent_redirect Gibt True zurück, wenn die Antwort eine dauerhaft weitergeleitete URL ist, andernfalls wird False zurückgegeben
is_redirect Gibt True zurück, wenn die Antwort weitergeleitet wurde, andernfalls wird False zurückgegeben
iter_content() Iteriert über die Antwort
iter_lines() Iteriert über die Zeilen der Antwort
json() Gibt ein JSON-Objekt des Ergebnisses zurück (das Ergebnis muss im JSON-Format vorliegen, andernfalls wird ein Fehler ausgelöst)
links Gibt die geparsten Header-Links der Antwort zurück
next Gibt das PreparedRequest-Objekt für die nächste Anfrage in der Weiterleitungskette zurück
ok Überprüft den Wert von "status_code", gibt True zurück, wenn er kleiner als 400 ist, gibt False zurück, wenn er nicht kleiner als 400 ist
raise_for_status() Wenn ein Fehler auftritt, gibt die Methode ein HTTPError-Objekt zurück
reason Beschreibung des Antwortstatus, wie zum Beispiel "Not Found" oder "OK"
request Gibt das Request-Objekt zurück, das diese Antwort angefordert hat
status_code Gibt den HTTP-Statuscode zurück, wie zum Beispiel 404 und 200 (200 ist OK, 404 ist Not Found)
text Gibt den Inhalt der Antwort als Unicode-Daten zurück
url Gibt die URL der Antwort zurück

Beispiel

# Importiere das requests-Paket
import requests

# Sende Anfrage
x = requests.get('https://www.example.com/')

# HTTP-Statuscode zurückgeben
print(x.status_code)

# Beschreibung des Antwortstatus
print(x.reason)

# Kodierung zurückgeben
print(x.apparent_encoding)

Das Ausgabeergebnis ist wie folgt:

200
OK
utf-8

Eine JSON-Datendatei anfordern und JSON-Inhalt zurückgeben:

Beispiel

# Importiere das requests-Paket
import requests

# Sende Anfrage
x = requests.get('https://www.example.com/try/ajax/json_demo.json')

# JSON-Daten zurückgeben
print(x.json())

Das Ausgabeergebnis ist wie folgt:

{'name': '网站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻译']}, {'name': 'Example', 'info': ['Example', 'Example工具', 'Example微信']}, {'name': 'Taobao', 'info': ['淘宝', '网购']}]}

requests-Methoden

Die requests-Methoden sind wie folgt:

Methode Beschreibung
delete(url, args) Sendet eine DELETE-Anfrage an die angegebene URL
get(url, params, args) Sendet eine GET-Anfrage an die angegebene URL
head(url, args) Sendet eine HEAD-Anfrage an die angegebene URL
patch(url, data, args) Sendet eine PATCH-Anfrage an die angegebene URL
post(url, data, json, args) Sendet eine POST-Anfrage an die angegebene URL
put(url, data, args) Sendet eine PUT-Anfrage an die angegebene URL
request(method, url, args) Sendet die angegebene Anfragemethode an die angegebene URL

Senden Sie eine GET-Anfrage mit requests.request():

Beispiel

# Importiere das requests-Paket
import requests

# Sende Anfrage
x = requests.request('get', 'https://www.example.com/')

# Webseiteninhalt zurückgeben
print(x.status_code)

Das Ausgabeergebnis ist wie folgt:

200

Anfrage-Header festlegen:

Beispiel

# Importiere das requests-Paket
import requests

 
kw = {'s':'python tutorial'}

# Anfrage-Header festlegen
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# params akzeptiert Query-Parameter als Dictionary oder String. Dictionary-Typen werden automatisch in URL-Kodierung umgewandelt, urlencode() ist nicht erforderlich
response = requests.get("https://www.example.com/", params = kw, headers = headers)

# Antwort-Statuscode anzeigen
print (response.status_code)

# Zeichenkodierung des Antwort-Headers anzeigen
print (response.encoding)

# Vollständige URL-Adresse anzeigen
print (response.url)

# Antwortinhalt anzeigen, response.text gibt Daten im Unicode-Format zurück
print(response.text)

Das Ausgabeergebnis ist wie folgt:

200
UTF-8
https://www.example.com/?s=python+%E6%95%99%E7%A8%8B

... 其他内容...

Die Methode post() kann eine POST-Anfrage an die angegebene URL senden. Das allgemeine Format ist wie folgt:

requests.post(url, data={key: value}, json={key: value}, args)
  • urlDie URL, die angefordert wird.

  • dataDer Parameter data ist ein Dictionary, eine Tupelliste, Bytes oder ein Dateiobjekt zum Senden an die angegebene URL.

  • jsonDer Parameter json ist ein JSON-Objekt zum Senden an die angegebene URL.

  • argsWeitere Parameter wie cookies, headers, verify usw.

Beispiel

# Importiere das requests-Paket
import requests

# Sende Anfrage
x = requests.post('https://www.example.com/try/ajax/demo_post.php')

# Webseiteninhalt zurückgeben
print(x.text)

Das Ausgabeergebnis ist wie folgt:

<p style='color:red;'>本内容是使用 POST 方法请求的。</p><p style='color:red;'>请求时间:
2022-05-26 17:30:47</p>

POST-Anfrage mit Parametern:

Beispiel

# Importiere das requests-Paket
import requests

# Formularparameter, Parameternamen sind fname und lname
myobj = {'fname': 'EXAMPLE','lname': 'Boy'}

# Sende Anfrage
x = requests.post('https://www.example.com/try/ajax/demo_post2.php', data = myobj)

# Webseiteninhalt zurückgeben
print(x.text)

Das Ausgabeergebnis ist wie folgt:

<p style='color:red;'>你好,EXAMPLE Boy,今天过得怎么样?</p>

Zusätzliche Anfrageparameter

Beim Senden einer Anfrage können wir der Anfrage zusätzliche Parameter anhängen, wie z. B. Anfrage-Header, Abfrageparameter, Anfragekörper usw., zum Beispiel:

headers = {'User-Agent': 'Mozilla/5.0'}  # 设置请求头
params = {'key1': 'value1', 'key2': 'value2'}  # 设置查询参数
data = {'username': 'example', 'password': '123456'}  # 设置请求体
response = requests.post('https://www.example.com', headers=headers, params=params, data=data)

Der obige Code sendet eine POST-Anfrage mit zusätzlichen Anfrage-Headern, Abfrageparametern und Anfragekörper.

Neben grundlegenden GET- und POST-Anfragen unterstützt requests auch andere HTTP-Methoden wie PUT, DELETE, HEAD, OPTIONS usw.

Andere Erweiterungen