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
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
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
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
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
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
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
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