[Python] Jak wykonać zapytanie HTTP
W Pythonie do obsługi żądań HTTP służy moduł requests, a więc w celu wysłania żądania trzeba go zaimportować.
Wysyłanie żądania GET przy użyciu requests
W poniższym przykładzie wysłane zostanie żądanie HTTP GET na adres https://www.example.com. Po odebraniu odpowiedzi wyświetlone zostaną zwrócone nagłówki.
import requests
url = "https://www.example.com"
response = requests.get(url)
print(response.headers)
Aby przekazać parametry w zapytaniu, należy przekazać je w argumencie params jako klucz=wartość - tak jak na poniższym przykładzie:
import requests
url = "https://www.example.com"
my_params= {'page' : 'contact', 'id' : '50'}
response = requests.get(url, params=my_params)
print(response.headers)
Aby wyświetlić zawartość odpowiedzi należy użyć właściwości text:
import requests
url = "https://www.example.com"
response = requests.get(url)
print(response.text)
Zapytanie HTTP przy użyciu PycURL
Ten sam efekt można osiągnąć wykorzystując do tego bibliotekę PycURL. Poniższy przykład wykona zapytanie i wyświetli w terminalu zwrócone nagłówki:
import pycurl
def send_requ(url):
buffer = b''
headers = {}
with pycurl.Curl() as curl:
curl.setopt(curl.URL, url)
curl.setopt(curl.WRITEFUNCTION, lambda data: buffer.extend(data))
curl.setopt(curl.HEADERFUNCTION, lambda data: headers.update(parse_header(data)))
curl.perform()
return headers
def parse_header(data):
header = {}
for line in data.splitlines():
if ':' in line:
key, value = line.split(':', 1)
header[key.strip()] = value.strip()
return header
url = "https://www.example.com"
response = send_requ(url)
for key, value in response.items():
print(f"{key}: {value}")
Komentarze
Prześlij komentarz
Dzięki za komentarz!