2. Hangi Fetcher Ne Zaman Kullanılır?
Scrapling’de veri çekmek için farklı fetcher sınıfları vardır. Doğru fetcher seçimi önemlidir.
Sınıf: Kullanım amacı
* Fetcher: Statik HTML sayfaları için hızlı HTTP istekleri
* AsyncFetcher: Asenkron, çoklu istek senaryoları
* DynamicFetcher: JavaScript ile yüklenen dinamik sayfalar
* StealthyFetcher: Tarayıcı benzeri davranış gereken yetkili/izinli scraping senaryoları
* FetcherSession: Cookie/session koruyarak ardışık istekler
* DynamicSession: Browser session’ı açık tutarak dinamik sayfalarda işlem
* StealthySession: Daha gelişmiş browser session kullanımı
Basit haber, blog, ürün listeleme veya statik HTML içeren sitelerde önce "Fetcher" denenmelidir. Sayfa içeriği JavaScript ile sonradan yükleniyorsa, "DynamicFetcher" gerekir. Login, cookie veya aynı oturum içinde sayfa gezme gerekiyorsa, session sınıfları kullanılmalıdır.
3. Basit Veri Çekme Örneği
Örnek olarak "
quotes.toscrape.com" gibi scraping eğitimi için hazırlanmış bir siteyi kullanalım.
</> Python
from scrapling.fetchers import Fetcher
page = Fetcher.get("
quotes.toscrape.com/")
quotes = page.css(".quote .text::text").getall()
for quote in quotes:
print(quote)
Burada:
</> Python
page = Fetcher.get(...)
sayfayı çeker.
</> Python
page.css(".quote .text::text")
CSS selector ile quote metinlerini seçer.
</> Python
.getall()
eşleşen tüm metinleri liste olarak döndürür.
Tek bir sonuç almak istersen:
</> Python
first_quote = page.css(".quote .text::text").get() print(first_quote)
4. Session Kullanarak Veri Çekme
Bazı sitelerde cookie, oturum veya tarayıcı fingerprint bilgisi önemlidir. Bu durumda FetcherSession kullanılır.
</> Python
from scrapling.fetchers import FetcherSession
with FetcherSession(impersonate="chrome") as session:
page = session.get(
"
quotes.toscrape.com/",
stealthy_headers=True
)
quotes = page.css(".quote .text::text").getall()
for quote in quotes:
print(quote)
Burada impersonate="chrome" ifadesi, isteğin Chrome tarayıcısına daha benzer görünmesini sağlar. "stealthy_headers=True" ise, daha gerçekçi header üretimi için kullanılır. Bu özellikleri yalnızca izinli, yasal ve sitenin kullanım şartlarına uygun veri toplama senaryolarında kullanmak gerekir.