Python Requests ile HTTP İsteklerini Yönetmek

Daha önce “HTTP İsteklerinin Anatomisi” başlığında “HTTP nedir, ne değildir?” sorularını cevapladık. Bu yazımızda da “python-requests kullanarak nasıl istek göndeririz?” konusuna değineceğiz.

Requests kullanmamızın sebebi, basit, hızlı ve esnek olması. Zaten sloganının “HTTP For Humans” olması bize bunu açık bir şekilde gösteriyor. Birazdan örnekleri gösterdikçe daha net göreceksiniz zaten.

Requests Kurulumu

Diğer kütüphaneler gibi pip yardımı ile kurulabilir.

~$ pip install requests

Artık “import requests” diyerek kullanmaya başlayabiliriz.

Requests ile GET İsteği

Önceki konuda da belirttiğimiz gibi, bir web sayfasından bilgi talep ettiğimizde GET metodunu kullanırız. Python kısmında da bu değişmiyor.

>>> request = requests.get('blog.peptr.net')

İşte bu kadar basit. Eğer sayfaya query string (yani parametre/argüman) göndermek istiyorsanız params diyerek bunları gönderebilirsiniz.

>>> param = {'s': 'docker'}
>>> request = requests.get('https://blog.peptr.net', params = param)

>>> print(request.url)
'https://blog.peptr.net/?s=docker'
>>> print(request.status_code)
200

Argüman olarak gönderdiğimiz değerleri “sözlük/dict” olarak gönderdiğimize dikkat etmişsinizdir.

İsteğimizi 2. satırda “request” nesnesine aktarıyoruz. Burada “request.url”, isteğin nihai url adresini veriyor. Ayrıca status_code ise dönen isteğin HTTP kodunu veriyor.

Bknz: https://developer.mozilla.org/tr/docs/Web/HTTP/Status

Dönen veriye erişmek için “text” değerini kullanıyoruz.

>>> print(request.text)
"""
<html>
    <head>
...
"""

Bu kadar basit.

Requests ile POST İşlemi

POST işlemi de GET ile benzer şekilde. Bu defa veri gönderirken POST fonksiyonunu kullanıyoruz ve argüman olarak “data” gönderiyoruz.

data = {"username": "yemre", "password": "canYouHackMe?"}

request = requests.post('https://blog.peptr.net/login', data = data)

print(request.text)

Requests ile Oturum Yönetimi

Gönderdiğiniz isteklerde oturum kaydı tutulmaz, bu da her istekte yeni bir bağlantı oluştuğunu gösteriyor. Yani 1 kez giriş yaptıktan sonra ikinci isteği gönderdiğinizde sizi giriş yapmamış gösterecektir. Bu tür durumlar için Session sınıfını kullanıyoruz.

>>> oturum = requests.Session()
>>> oturum.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
>>> result = oturum.get('https://httpbin.org/cookies')

print(result.text)
'{"cookies": {"sessioncookie": "123456789"}}

Aynı işlemi Session olmadan denediğinizde farkı daha net anlayabilirsiniz.

Başlık (Header) Verilerinin Gönderilmesi

Ayrıca User-Agent gibi header bilgilerini “headers” ile gönderebilirsiniz. Örnek kod, aşağıdaki gibidir.

>>> url = 'https://blog.peptr.net'
>>> headers = {'user-agent': 'my-app/0.0.1'}

>>> r = requests.get(url, headers=headers)

Diğer Metotlar

Diğer HTTP metotları için o isteğin fonksiyonunu aynen kullanabilirsiniz.

>>> r = requests.put('https://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('https://httpbin.org/delete')
>>> r = requests.head('https://httpbin.org/get')
>>> r = requests.options('https://httpbin.org/get')

Çok daha fazlasını readthedocs‘un kendi sitesinden okuyabilirsiniz. Bu konu, başlangıç olarak yol göstermesi amacı ile hazırlanmıştır.

Kolay gelsin!

Leave a comment