Resim

Python requests Modülü

Web ve API Etkileşimi (Web Kazıma Temeli)

Python 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.

1. Kurulum (Tekrar Hatırlatma)

Hatırladığınız gibi, bu harici bir kütüphanedir ve PIP ile kurulmalıdır:

pip install requests

2. Temel HTTP İstekleri

En yaygın kullanılan iki HTTP metodunu (GET ve POST) inceleyelim:

A. Veri Çekme: 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']}")

B. Veri Gönderme: 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

3. Ek İstek Parametreleri

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 requests Modülünün Temel HTTP Metotları

Bu metotlar, requests modü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)

2. 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)

3. 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)

4. 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)

5. 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)

6. 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

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?