Python ile API'lerden Veri Çekme: Veri Hattı Oluşturma

Maurice Odida

Maurice Odida

7 June 2025

Python ile API'lerden Veri Çekme: Veri Hattı Oluşturma

Uygulama Programlama Arayüzleri (API'ler), modern veri mimarisinin temel taşları haline gelmiştir. Uygulamaların iletişim kurduğu ve bilgi alışverişi yaptığı kanallardır ve bu da onları sağlam ve dinamik veri işlem hatları oluşturmak için paha biçilmez bir kaynak haline getirir. Python gibi çok yönlü bir dil kullanarak API'lerden veriyi etkili bir şekilde çıkarma yeteneği, herhangi bir veri mühendisi, veri bilimcisi veya analisti için temel bir beceridir. Bu makale, bu sürecin inceliklerini derinlemesine inceleyerek, veri işlem hatlarınızı beslemek için API'lerin gücünden nasıl yararlanılacağına dair kapsamlı bir rehber sunacaktır.

💡
Harika API Dokümantasyonu oluşturan harika bir API Test Aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
button

Veri İşlem Hatlarında API'lerin Rolü

Temelde, bir veri işlem hattı, veriyi bir kaynaktan bir hedefe taşıyan bir dizi otomatikleştirilmiş süreçtir. Bu hattın başlangıç ve muhtemelen en kritik aşaması veri çıkarma işlemidir. Veri, veritabanlarından, dosyalardan veya akış platformlarından elde edilebilirken, API'ler benzersiz bir avantaj sunar: çok çeşitli web hizmetlerinden ve uygulamalardan gerçek zamanlı, dinamik ve genellikle özel verilere erişim.

Bir borsa API'sinden finansal veri almak, bir platformun API'sinden sosyal medya trendlerini toplamak veya bir CRM sisteminin API'sinden müşteri bilgilerine erişmek olsun, bu bilgiyi programlı olarak alma yeteneği temeldir. Python, zengin kütüphane ekosistemi ve anlaşılır sözdizimi ile bu görev için fiili dil haline gelmiştir. Basitliği hızlı geliştirmeye olanak tanırken, güçlü kütüphaneleri API etkileşimlerinin karmaşıklıklarını ele almak için gerekli araçları sağlar.

Python ile İlk API Çağrınızı Yapmak

API veri çıkarma yolculuğu basit bir HTTP isteğiyle başlar. Python'daki requests kütüphanesi bu amaç için altın standarttır. HTTP istekleri yapmanın karmaşıklıklarını soyutlayarak basit ve zarif bir arayüz sağlar.

Başlamak için öncelikle kütüphaneyi kurmanız gerekir:Python

pip install requests

Kurulduktan sonra, bir API uç noktasına GET isteği yapabilirsiniz. Bir uç nokta, basitçe bir dizi veri sağlayan belirli bir URL'dir. Bu örnek için, test ve prototipleme için kullanabileceğiniz ücretsiz bir çevrimiçi REST API olan JSONPlaceholder API'sini kullanalım.Python

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')

# Check if the request was successful
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"Failed to retrieve data: {response.status_code}")

Bu kod parçasında, requests.get() belirtilen URL'ye bir GET isteği gönderir. response nesnesi, sunucunun isteğimize verdiği yanıtı içerir. status_code özniteliği, isteğin başarılı olup olmadığını bize söyler. 200 durum kodu başarıyı gösterir. Ardından response.json() yöntemi, yanıtın JSON içeriğini bir Python sözlüğüne ayrıştırarak onunla çalışmayı kolaylaştırır.

Farklı Veri Formatlarını İşleme

JSON (JavaScript Object Notation) API'ler için en yaygın veri formatı olsa da, XML (eXtensible Markup Language) gibi başka formatlarla da karşılaşabilirsiniz. requests kütüphanesi farklı içerik türlerini işleyebilir. XML için, veriyi ayrıştırmak üzere xml.etree.ElementTree gibi bir kütüphane kullanmanız gerekebilir.Python

import requests
import xml.etree.ElementTree as ET

response = requests.get('URL_TO_XML_API')

if response.status_code == 200:
    root = ET.fromstring(response.content)
    # Now you can traverse the XML tree
    for child in root:
        print(child.tag, child.attrib)
else:
    print(f"Failed to retrieve data: {response.status_code}")

Anahtar nokta, aldığınız verinin formatını anlamak ve uygun ayrıştırma kütüphanesini kullanmak için yanıtın Content-Type başlığını incelemektir.

API Kimlik Doğrulama Labirentinde Gezinme

Çoğu API, kullanıcıyı tanımlamak ve verilere erişimi kontrol etmek için bir tür kimlik doğrulama gerektirir. Bu, güvenlik ve API kullanımını izlemek için çok önemlidir. Birkaç yaygın kimlik doğrulama yöntemi vardır:

API Anahtarları

Bu, en basit kimlik doğrulama biçimlerinden biridir. API sağlayıcısı size isteklerinize dahil etmeniz gereken benzersiz bir anahtar verir. Bu anahtar genellikle URL'de bir sorgu parametresi olarak veya istek başlıklarında geçirilir.Python

import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': f'Bearer {api_key}'}

response = requests.get('https://api.example.com/data', headers=headers)

OAuth

OAuth (Open Authorization), daha güvenli ve karmaşık bir kimlik doğrulama standardıdır. Kullanıcıların kimlik bilgilerini paylaşmadan üçüncü taraf uygulamalara kaynaklarına sınırlı erişim izni vermesini sağlar. Süreç1 genellikle, uygulamanın kimliği doğrulanmış istekler yapmak için kullanılan bir erişim belirteci aldığı çok adımlı bir el sıkışmayı içerir. requests-oauthlib gibi kütüphaneler bu süreci basitleştirebilir.

Temel Kimlik Doğrulama

Bu yöntem, her istekle birlikte bir kullanıcı adı ve parola göndermeyi içerir. Kimlik bilgileri genellikle Base64 kodlu olarak Authorization başlığında gönderilir. requests kütüphanesi bunu ele almak için uygun bir yola sahiptir:Python from requests.auth import HTTPBasicAuth response = requests.get('https://api.example.com/data', auth=HTTPBasicAuth('your_username', 'your_password')) ```

Hız Sınırlamasını Yönetme Sanatı

Kötüye kullanımı önlemek ve adil kullanımı sağlamak için, çoğu API hız sınırları uygular; bu da bir kullanıcının belirli bir süre içinde yapabileceği istek sayısını kısıtlar. Bu limitin aşılması genellikle 429 Too Many Requests durum koduyla sonuçlanır. Sağlam bir veri çıkarma betiği bu limitleri zarifçe ele almalıdır.

Yaygın bir strateji, kodunuza bir bekleme süresi dahil etmektir. Python'daki time kütüphanesi burada sizin dostunuzdur.Python

import requests
import time

for i in range(100):
    response = requests.get('https://api.example.com/data')
    if response.status_code == 200:
        # Process the data
        pass
    elif response.status_code == 429:
        print("Rate limit exceeded. Waiting...")
        retry_after = int(response.headers.get('Retry-After', 10)) # Check for a 'Retry-After' header
        time.sleep(retry_after)
    else:
        print(f"An error occurred: {response.status_code}")
        break

Bu basit döngü istek yapmaya çalışır. Bir hız limitine ulaşırsa, (bazı API'lerin ne kadar bekleneceğini belirtmek için sağladığı) bir Retry-After başlığı olup olmadığını kontrol eder ve ardından tekrar denemeden önce yürütmeyi duraklatır.

Sayfalandırmayı Fethetmek: Hiç Bitmeyen Hikaye

Bir API uç noktası büyük bir veri kümesi döndürdüğünde, genellikle "sayfalandırılmış" olacaktır; bu da verinin birden çok sayfaya bölündüğü anlamına gelir. Betiğinizin tüm veriyi çıkarmak için bu sayfalar arasında gezinebilmesi gerekir. Birkaç yaygın sayfalandırma stratejisi vardır:

Ofset Tabanlı Sayfalandırma

Bu en yaygın yöntemlerden biridir. API'nin offset (veya page) ve limit (veya per_page) gibi parametreleri olacaktır. Bir sonraki veri parçasını almak için her sonraki istekte offset veya page numarasını artırırsınız.Python

import requests

base_url = 'https://api.example.com/data'
page = 1
all_data = []

while True:
    params = {'page': page, 'per_page': 100}
    response = requests.get(base_url, params=params)
    if response.status_code == 200:
        data = response.json()
        if not data: # No more data
            break
        all_data.extend(data)
        page += 1
    else:
        print(f"Failed to retrieve data: {response.status_code}")
        break

İmleç Tabanlı Sayfalandırma

Bu yöntem, veri kümesindeki belirli bir öğeye işaret eden bir "imleç" kullanır. Her API yanıtı bir next_cursor veya benzeri bir alan içerecektir. Sonraki veri kümesini almak için bir sonraki isteğinizde bu imleci kullanırsınız. Bu yöntem genellikle çok büyük veri kümeleri için daha verimlidir.Python

import requests

base_url = 'https://api.example.com/data'
next_cursor = None
all_data = []

while True:
    params = {'cursor': next_cursor} if next_cursor else {}
    response = requests.get(base_url, params=params)
    if response.status_code == 200:
        data = response.json()
        all_data.extend(data['results'])
        next_cursor = data.get('next_cursor')
        if not next_cursor:
            break
    else:
        print(f"Failed to retrieve data: {response.status_code}")
        break

Çıkarılan Veriyi Yapılandırma ve Saklama

Veriyi API'den başarıyla çıkardıktan sonra, bir sonraki adım onu veri işlem hattınız için uygun bir şekilde yapılandırmak ve saklamaktır. Ham JSON veya XML verisi genellikle iç içe geçmiş ve doğrudan analiz veya ilişkisel bir veritabanına yükleme için ideal değildir.

pandas kütüphanesi bu görev için vazgeçilmez bir araçtır. Tablo verileri için mükemmel olan iki boyutlu etiketli bir veri yapısı olan DataFrame'i sağlar.Python

import pandas as pd

# Assuming 'all_data' is a list of dictionaries from the API
df = pd.DataFrame(all_data)

Ardından DataFrame üzerinde çeşitli dönüşümler gerçekleştirebilirsiniz; örneğin belirli sütunları seçme, sütunları yeniden adlandırma ve eksik değerleri işleme.

İlk depolama için birkaç seçeneğiniz vardır:

Çıkarma Sürecini Otomatikleştirme

Bir veri işlem hattı tek seferlik bir iş değildir. Genellikle API'lerden düzenli bir programla (örneğin, günlük, saatlik) veri çıkarmanız gerekir. İşte burada otomasyon devreye girer.

Python betiklerinizi belirli aralıklarla çalıştırmak için aşağıdaki gibi araçları kullanarak zamanlayabilirsiniz:

Sonuç: Esnek Bir Çıkarma Süreci Oluşturma

API'lerden veri çıkarma, modern veri işlem hatları oluşturmak için temel bir beceridir. Bir API isteği yapmanın temelleri basit olsa da, esnek ve üretime hazır bir çıkarma süreci oluşturmak, kimlik doğrulama, hız sınırlaması, sayfalandırma ve hata işleme konularında dikkatli düşünmeyi gerektirir. Python'ın gücünden ve zengin kütüphane ekosisteminden yararlanarak, API'ler aracılığıyla erişilebilen geniş veri okyanusundan etkili bir şekilde yararlanabilir ve hem sağlam hem de güvenilir veri işlem hatları oluşturabilirsiniz. Basit bir requests.get()'ten tam otomatik ve zamanlanmış bir veri çıkarma betiğine giden yolculuk, veri mühendisliği dünyasında Python'ın gücünün ve esnekliğinin bir kanıtıdır.

💡
Harika API Dokümantasyonu oluşturan harika bir API Test Aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin