In this Article
Web scraping en iyi uygulamaları, aylarca sorunsuz çalışan bir toplayıcı ile bozulan, engellenen veya fark edilmeden anlamsız veriler döndüren bir toplayıcı arasındaki farkı yaratır. Bu rehber, mühendislik tarafına odaklanır: güvenilir, veri okudukları sitelere karşı saygılı ve büyük ölçekte işletmesi düşük maliyetli web kazıyıcılar nasıl oluşturulur.
Çoğu web kazıyıcı öngörülebilir biçimlerde başarısız olur: sunucuları çok hızlı zorlar, bot gibi görünür veya değişen sayfa yapısına bağlı kalır. Scraping’i tek seferlik bir betik yerine veri işlem hattı olarak ele almak, temel zihniyet değişikliğidir. Aşağıdaki teknikler hız sınırlama, IP ve header rotasyonu, doğru veri kaynağını seçme, dayanıklı ayrıştırma, yeniden denemeler, önbellekleme ve kalite güvencesini kapsar. Günde birkaç bin sayfa veya birkaç milyon sayfa toplamanız fark etmeksizin uygulanırlar.
DataImpulse, 195 ülkede 90 milyondan fazla residential, mobile ve datacenter IP adresi sunan etik bir proxy sağlayıcısıdır. Süresi dolmayan trafikle GB başına 1 dolardan başlayan kullandıkça öde modeli kullanır; web scraping, reklam doğrulama, fiyat takibi, pazar araştırması ve çoklu hesap yönetimi için kullanılır.
Temel Bilgiler
- Önce güvenilirlik: En önemli web scraping en iyi uygulamaları, hız sınırlarına uymak, IP’leri gerçekçi header’larla dönüşümlü kullanmak, bekleme süreli yeniden denemeler yapmak ve güvenmeden önce her toplu işlemi doğrulamaktır.
- En iyi proxy türü: tespiti aşabilen, gerçek kullanıcı IP’lerini kullanan dönen residential proxy’ler.
- Fiyat: GB başına 1 dolardan başlayan, kullandıkça öde, süresi dolmayan trafik ve abonelik gerektirmeyen yapı.
- Kapsam: 195 ülkede etik biçimde tedarik edilmiş 90M’den fazla IP.
- Güvenilirlik: %99,51 başarı oranı, G2’de 5 üzerinden 4,8 puan.
- Protokoller ve hedefleme: ülke hedefleme dahil HTTP, HTTPS ve SOCKS5.

Hız sınırlarına nasıl uymalı ve bekleme süresini nasıl artırmalısınız?
İstekleri hedefin kaldırabileceği hızda gönderin ve hedef zorlandığını belirttiğinde otomatik olarak yavaşlayın. Uyarlanabilir bekleme, hem saygılı hem de kendini koruyan bir yaklaşımdır; çünkü agresif trafik engellenmenin en hızlı yoludur.
Muhafazakar bir eşzamanlılık düzeyi ve istekler arasında kısa bir gecikmeyle başlayın; yalnızca site sağlıklı kaldığında düzeyi artırın. HTTP 429 (Çok Fazla İstek) ve 503 yanıtlarını izleyin; sunucunun döndürdüğü Retry-After header’ına uyun. Hatalarla karşılaştığınızda, paralel çalışanların aynı anda yeniden deneme yapmaması için küçük bir rastgelelik ekleyerek beklemeyi üstel biçimde artırın.
- Eşzamanlılık: yalnızca genel olarak değil, her host için eşzamanlı bağlantıları sınırlayın.
- Temel gecikme: aynı domain’e yapılan istekler arasına kısa bir bekleme ekleyin.
- Üstel bekleme: her başarısızlıktan sonra beklemeyi, bir üst sınıra kadar iki katına çıkarın.
- Rastgelelik: yeniden denemelerin zamana yayılması için gecikmeleri rastgeleleştirin.
Engellerden kaçınmak için IP’leri ve header’ları nasıl dönüşümlü kullanırsınız?
İstekleri birçok IP adresine dağıtın ve her oturumun sıradan bir tarayıcı gibi görünmesi için gerçekçi, tutarlı istek header’ları gönderin. Rotasyon yükü yayar ve tek bir adresin hız eşiklerini aşmasını önler.
Residential ve mobile IP’ler gerçek kullanıcılara benzer ve ham datacenter aralıklarına göre işaretlenmeleri daha zordur; bununla birlikte datacenter proxy’ler izin veren hedefler ve yüksek aktarım hızı için hâlâ uygundur. DataImpulse, dönen ve sticky session’larla residential proxy’ler, mobile proxy’ler ve datacenter proxy’ler sunar; böylece IP türünü sitenin zorluğuna göre eşleştirebilirsiniz. Rotasyonu birbiriyle uyumlu header’larla kullanın: makul bir gerçek tarayıcıyla eşleşen bir User-Agent, Accept-Language ve Accept-Encoding kullanın; bunları her istekte rastgeleleştirmek yerine oturum içinde sabit tutun. Daha ayrıntılı bir kontrol listesi için engellenmeden scraping yapma rehberimize bakın.
Oturum modunu iş akışınıza göre seçin. Dönen oturumlar sık sık yeni bir IP atar; bu, yükü yayar ve ilişkisiz sayfaların paralel olarak taranmasına uygundur. Sticky session’lar belirli bir süre boyunca tek IP’yi korur; bu da oturum çerezine bağlı sonuçlarda oturum açma, sepete ekleme veya sayfalama gibi çok adımlı akışlar için önemlidir. DataImpulse, havuzlarında iki modu da destekler. Bir oturumun IP’sini, çerezlerini ve header’larını birlikte tutarlı bırakın; çünkü değişen parmak izleriyle eşleştirilmiş sabit bir IP de kaçınmaya değer bir sinyaldir.
import requests
HEADERS_POOL = [
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/124.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
},
{
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
"AppleWebKit/605.1.15 (KHTML, like Gecko) "
"Version/17.4 Safari/605.1.15",
"Accept-Language": "en-GB,en;q=0.8",
},
]
def build_session(headers, proxy_url):
s = requests.Session()
s.headers.update(headers)
s.proxies.update({"http": proxy_url, "https": proxy_url})
return s
HTML ayrıştırmak yerine gizli bir API’yi ne zaman kullanmalısınız?
Mevcut olduğunda, bir sitenin temel JSON API’sini işlenmiş HTML’i scraping yapmaya tercih edin. API’ler temiz, yapılandırılmış veri döndürür; sayfa işaretlemesine göre daha seyrek değişir ve işlenmeleri çok daha düşük maliyetlidir.
Tarayıcı geliştirici araçlarını açın, sayfa yüklenirken Network sekmesini izleyin ve XHR veya Fetch isteklerine göre filtreleyin. Birçok site içeriği, bazen sayfalama veya filtreleme için basit sorgu parametreleriyle doğrudan çağırabileceğiniz JSON uç noktalarından doldurur. Bu, başsız tarayıcının ek yükünü önler, çoğu düzen değişikliğini atlatır ve size kırılgan metin çıkarma yerine türü belirlenmiş alanlar sunar. Her zaman sitenin koşullarını kontrol edin, yalnızca erişim izniniz olan verileri isteyin ve uç nokta hızlı olsa bile istek hacminizi makul tutun.
Site değişikliklerine dayanıklı seçicileri nasıl yazarsınız?
Kararlı, anlamlı öznitelikleri hedefleyen seçiciler yazın ve kullanıcılarınızdan önce bozulmayı öğrenmeniz için izleme ekleyin. Kırılgan seçiciler, fark edilmeden veri kaybının en yaygın nedenidir.
Her yeniden dağıtımda değişen, otomatik oluşturulmuş sınıf adı zincirleri yerine element ID’leri, data öznitelikleri veya ARIA rolleri gibi anlamsal kancaları temel alın. Ayrıştırma mantığını tek yerde tutun; böylece bir düzen değişikliği, kod tabanının tamamında aramak yerine tek bir modülü düzenlemek anlamına gelir. Ardından ayrıştırıcınızı canlı ortam kodu gibi ele alın:
- Doğrulamalar: her beklenen alanın kayıt başına mevcut ve boş olmadığını onaylayın.
- Kanaryalar: bilinen birkaç URL’yi düzenli olarak scraping yapın ve şekil değişirse uyarı verin.
- Satır sayıları: bugünkü hacmi dünkü hacimle karşılaştırın ve büyük düşüşleri işaretleyin.
- Anlık görüntüler: sonradan hataları ayıklayabilmeniz için ham HTML’den bir örnek saklayın.
Yeniden denemeler ve önbellekleme scraping’i nasıl düşük maliyetli tutar?
İstekleri idempotent yapın ve yalnızca başarısız olanları yeniden deneyin; ardından değişmemiş sayfaları bir daha asla yeniden indirmemek için agresif biçimde önbelleğe alın. Her iki uygulama da maliyeti düşürür ve hedefteki yükü azaltır.
Her iş birimini URL veya kayıt ID’si gibi kararlı bir anahtar etrafında tasarlayın; böylece bir işi yeniden çalıştırmak güvenlidir ve asla yinelenen kayıtlar oluşturmaz. Geçici hatalarda (zaman aşımları, 5xx, bağlantı sıfırlamaları) beklemeli yeniden deneme yapın; kalıcı hatalarda (404, 410) sonucu kaydedip devam edin. Önbellekleme için ETag ve Last-Modified gibi HTTP doğrulayıcılarına uyun ve koşullu istekler gönderin; böylece değişmemiş sayfalar tam gövde yerine küçük bir 304 döndürür. Artımlı scraping, yani yalnızca yeni veya güncellenmiş öğeleri zaman damgaları, site haritaları ya da feed’ler kullanarak getirmek, bant genişliği üzerindeki en büyük etkendir. Proxy trafiği GB başına faturalandırıldığından, değişmemiş sayfaları atlamak harcamanızı doğrudan azaltır.
import time
import random
import requests
from requests.exceptions import RequestException
def fetch(session, url, retries=4):
for attempt in range(retries):
try:
r = session.get(url, timeout=20)
if r.status_code in (429, 503):
wait = int(r.headers.get("Retry-After", 2 ** attempt))
time.sleep(wait + random.random())
continue
r.raise_for_status()
return r
except RequestException:
if attempt == retries - 1:
raise
time.sleep((2 ** attempt) + random.random())
return None
Scraping ile toplanan veriyi nasıl doğrular ve işlem hattını nasıl gözlemlersiniz?
Her toplu işlemi açık bir şemaya göre doğrulayın ve tüm işi yeniden çalıştırmadan sorunları teşhis etmeye yetecek ayrıntıyı kaydedin. Güvenemeyeceğiniz veri, hiç verinin olmamasından daha kötüdür.
Her sütun için beklenen türü, aralığı ve zorunlu alanları tanımlayın; başarısız kayıtları ana deponuza yazmak yerine reddedin veya karantinaya alın. Sessiz başarısızlık biçimlerini kontrol edin: fiyatların olması gereken yerde boş dizeler, çok uzak gelecekteki tarihler, boş değer oranlarında ani artışlar veya yinelenen anahtarlar. Gözlemlenebilirlik tarafında her isteğin durum kodunu, gecikmesini, kullanılan proxy’yi ve aktarılan baytları kaydedin; yavaş bir bozulmanın panoda görünmesi için başarı oranını ve maliyeti zaman içinde izleyin. Yapılandırılmış kayıtlar ve birkaç uyarı, kırılgan bir web kazıyıcıyı güvenle işletebileceğiniz bir sisteme dönüştürür.
Scraping için yasal ve etik sınırlar nelerdir?
Yalnızca toplama izniniz olan verileri scraping yapın, hizmet koşullarına ve robots yönergelerine uyun, işlemek için yasal dayanağınız olmayan kişisel verilerden kaçının. Güvenilirlik ve sorumluluk birlikte yürür.
Kurallar yargı alanına ve veri türüne göre değişir; bu nedenle yasallığı sonradan düşünülecek bir konu değil, gerçek bir gereklilik olarak ele alın. web scraping yasal mı konusundaki genel bakışımız ana hususları açıklar; engellenmeden scraping yapma rehberi ise saygılı teknikleri kapsar. Tedarik de önemlidir: DataImpulse, IP’leri katılım onayı veren ve karşılığı ödenen kullanıcılardan gelen etik bir proxy sağlayıcısı olarak faaliyet gösterir. Bu, veri toplamanızı GDPR beklentileriyle uyumlu tutar.
En iyi uygulamalara genel bakış
| Uygulama | Neden | Araçlar |
|---|---|---|
| Bekleme ve yeniden denemeler | Sunucuları aşırı yüklemekten kaçının | Yeniden deneme kütüphaneleri |
| IP rotasyonu | Engelleri önleyin | Dönen proxy’ler |
| Gizli API’leri kullanın | Daha temiz, daha hızlı veri | Network inceleyicisi |
| İzleme | Bozulmaları erkenden yakalayın | Uyarılar ve loglar |
| Önbellekleme | Yinelenen istekleri azaltın | Yerel önbellek deposu |
| Doğrulama | Veri kalitesini sağlayın | Şema kontrolleri |

Sık sorulan sorular
En önemli web scraping en iyi uygulaması nedir?
Uyarlanabilir beklemeyle hız sınırlarına uymaktır. İstekleri hedefin kaldırabileceği hızda göndermek, engellerin çoğunu önler ve toplayıcınızı kararlı tutar; bu, tek bir tespit önleme yönteminden daha önemlidir.
Web scraping için residential proxy’lere ihtiyacım var mı?
Her zaman değil. Datacenter proxy’ler izin veren siteler ve yüksek aktarım hızı için iyi çalışırken, residential veya mobile IP’ler sıkı bot önleme sistemleri olan hedefler için daha uygundur. IP türünü sitenin zorluğuna göre eşleştirin.
Önbellekleme web scraping maliyetlerini nasıl azaltır?
Önbellekleme ve artımlı scraping, koşullu istekler ve zaman damgaları kullanarak değişmemiş sayfaları atlamanızı sağlar. Proxy trafiği GB başına faturalandırıldığından, değişmemiş içeriği yeniden indirmemek bant genişliği harcamasını doğrudan azaltır.
Bir site değiştiğinde web kazıyıcımın bozulmasını nasıl önlerim?
Otomatik oluşturulan sınıf adları yerine ID’ler ve data öznitelikleri gibi kararlı öznitelikleri hedefleyin, ayrıştırmayı tek modülde tutun ve sayfa yapısı değiştiğinde sizi uyaran düzenli kanarya kontrolleri çalıştırın.
Dönen mi yoksa sticky session mı kullanmalıyım?
Büyük bağımsız istek grupları için dönen oturumları, oturum açma veya oturuma bağlı sonuçlarda sayfalama gibi bir iş akışının birden çok adım boyunca aynı IP’ye ihtiyaç duyduğu durumlarda sticky session’ları kullanın.
DataImpulse ne zaman doğru tercih değildir?
Statik ISP proxy’lerine, tamamen yönetilen bir scraping API’sine veya bankacılık ve devlet sitelerine erişime ihtiyacınız varsa DataImpulse doğru araç değildir. Kamuya açık veri toplama ve içeriğe erişim için dönen residential, mobile ve datacenter proxy’lere odaklanır.
Etik proxy’lerle güvenilir web kazıyıcılar oluşturun
Sağlam mühendislik uygulamaları, güvenilir bir ağ üzerinde en iyi sonucu verir. DataImpulse, 195 ülkede GB başına 1 dolardan başlayan kullandıkça öde, süresi dolmayan trafikle dönen ve sticky etik proxy’ler sunar. Böylece küçük başlayıp işlem hattınız büyüdükçe ölçekleyebilirsiniz. Bu en iyi uygulamaları canlı ortama almak için hesap oluşturun.
