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{.rank-math-link}‘un kendi sitesinden okuyabilirsiniz. Bu konu, başlangıç olarak yol göstermesi amacı ile hazırlanmıştır.
Kolay gelsin!