[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

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?