- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
requests Modülürequests modülü, internet üzerindeki kaynaklara (web siteleri, API'ler) HTTP istekleri göndermeyi son derece basit hale getiren popüler bir harici kütüphanedir.
Hatırladığınız gibi, bu harici bir kütüphanedir ve PIP ile kurulmalıdır:
pip install requests
En yaygın kullanılan iki HTTP metodunu (GET ve POST) inceleyelim:
requests.get()Bir web sayfasından veya API'den veri talep etmek için kullanılır.
import requests
# İstek göndereceğimiz URL (Örnek bir API)
url = 'https://jsonplaceholder.typicode.com/posts/1'
# GET isteği gönder
yanit = requests.get(url)
# 1. Durum Kodu (Status Code) Kontrolü
# 200, isteğin başarılı olduğu anlamına gelir
print(f"Durum Kodu: {yanit.status_code}") # Çıktı: 200
# 2. Yanıtın İçeriğini Çekme
# .text: Yanıtın ham metin içeriği (genellikle HTML, XML veya JSON)
print("--- Ham İçerik ---")
print(yanit.text[:100] + "...") # İlk 100 karakteri göster
# 3. JSON Verisini Sözlüğe Çevirme (API'ler için KRİTİK)
# .json(): Yanıt içeriğini otomatik olarak Python Sözlüğüne
# (Dictionary) çevirir.
if yanit.status_code == 200:
veri = yanit.json()
print("\n--- Python Sözlük Verisi ---")
print(f"Başlık (Title): {veri['title']}")
print(f"Kullanıcı ID: {veri['userId']}")
requests.post()Yeni bir veri oluşturmak, form göndermek veya oturum açmak için kullanılır.
import requests
# Örnek API uç noktası (endpoint)
url_post = 'https://jsonplaceholder.typicode.com/posts'
# Göndereceğimiz veri (Python Sözlüğü)
yeni_veri = {
'title': 'Python Requests Denemesi',
'body': 'Bu bir POST isteği ile gönderilen yeni içeriktir.',
'userId': 101,
}
# POST isteği gönder (json=... ile veriyi JSON formatında göndeririz)
yanit_post = requests.post(url_post, json=yeni_veri)
print(f"\nPOST Durum Kodu: {yanit_post.status_code}")
# Başarılı POST işlemleri genellikle 201 (Oluşturuldu) döndürür.
# API, genellikle eklediğimiz veriyi ve ona atanan ID'yi
# geri döndürür.
if yanit_post.status_code == 201:
olusturulan_veri = yanit_post.json()
print(f"Oluşturulan ID: {olusturulan_veri['id']}")
# Yeni atanan ID
requests ile istekleri özelleştirebiliriz:
params (URL Parametreleri): URL'e eklemek istediğimiz filtreler (?key1=value1&key2=value2).
headers (Başlıklar): İstekte tarayıcı bilgisi, yetkilendirme (token) gibi özel bilgiler göndermek.
# Örnek: Arama yapmak için URL parametreleri kullanma
payload = {'userId': 2, 'completed': False}
yanit_filtrelenmis = requests.get(
'https://jsonplaceholder.typicode.com/todos', params=payload)
print(f"\nFiltrelenmiş Sonuç Sayısı:{len(yanit_filtrelenmis.json())}")
# Çıktı: Belirli koşullara uyan görev sayısıPython
requestsModülünün Temel HTTP MetotlarıBu metotlar,
requestsmodülünün bir API veya web sunucusu ile etkileşim kurmak için kullandığı ana fonksiyonlardır:1.
requests.get()
CRUD İşlemi: Read (Oku)
Amacı: Bir kaynaktan (web sayfası, resim, API verisi) veri talep etmek ve çekmek için kullanılır. Web'deki en yaygın metottur.
Kullanım: requests.get(url)
requests.post()CRUD İşlemi: Create (Oluştur)
Amacı: Sunucuya yeni bir veri göndererek (form, JSON, dosya) yeni bir kaynak oluşturmak için kullanılır.
Kullanım: requests.post(url, json=veri_sozluk)
requests.put()CRUD İşlemi: Update (Tam Güncelleme)
Amacı: Belirtilen URL'deki mevcut kaynağın tüm verisini, gönderdiğiniz yeni veriyle tamamen değiştirmek (üzerine yazmak) için kullanılır. Tüm alanları göndermeniz gerekir.
Kullanım: requests.put(url_id, json=tum_veri)
requests.patch()CRUD İşlemi: Update (Kısmi Güncelleme)
Amacı: Belirtilen kaynaktaki verinin sadece değiştirmek istediğiniz kısımlarını güncellemek için kullanılır. Daha verimli bir güncelleme yöntemidir.
Kullanım: requests.patch(url_id, json=degisen_veri)
requests.delete()CRUD İşlemi: Delete (Silme)
Amacı: Belirtilen URL'deki kaynağı sunucudan kalıcı olarak silmek için kullanılır.
Kullanım: requests.delete(url_id)
requests.head()Amacı: Yanıt gövdesini (body) indirmeden sadece HTTP Başlıklarını (Header) ve Durum Kodunu kontrol etmek için kullanılır. Hız ve bant genişliği tasarrufu sağlar.
Kullanım: requests.head(url)
Yorumlar
Yorum Gönder