1. Hata: "requests" Modülünü Doğru Kullanamamak
Web scraping için en çok kullanılan kütüphanelerden biri olan `requests`, internetten veri çekmek için oldukça basit ve etkili bir yol sunar. Ancak, `requests` modülünü kullanırken çoğu zaman hatalar meydana gelebilir. En yaygın hata, yanlış URL kullanmak veya bağlantı hataları ile karşılaşmaktır.
Çözüm: İlk adım, URL'nizin doğru olduğundan emin olmaktır. Ayrıca, `requests.get()` fonksiyonunun döndürdüğü status kodunu kontrol etmek faydalı olacaktır. Eğer 200'den farklı bir kod dönerse, sayfaya erişim sağlanamadığını anlamalısınız.
import requests
url = "https://example.com"
response = requests.get(url)
if response.status_code == 200:
print("Başarılı bağlantı!")
else:
print(f"Bağlantı hatası: {response.status_code}")
2. Hata: HTML Yapısını Yanlış Anlamak
HTML yapısının doğru anlaşılmaması, scraping işleminin başarısız olmasına yol açabilir. Özellikle dinamik içeriklerin bulunduğu sayfalarda, web scraping işlemi karmaşık hale gelir.
Çözüm: Sayfanın HTML yapısını dikkatlice inceleyin ve doğru etiketleri seçmeye özen gösterin. Eğer sayfa dinamik içerikler yüklüyorsa, Selenium veya Playwright gibi araçlar kullanarak bu içerikleri çekebilirsiniz.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
content = driver.page_source
print(content)
3. Hata: Verilerin Düzgün Temizlenmemesi
Web scraping işleminde veri temizliği genellikle göz ardı edilir. Ancak veriler, genellikle kirli ve düzensiz olabilir. Bu, veriyi analiz ederken sorunlar yaratabilir.
Çözüm: Web'den çektiğiniz veriyi temizlemek için Python'un `pandas` ve `re` gibi kütüphanelerini kullanabilirsiniz. Veriyi çekmeden önce, gereksiz boşluklar, özel karakterler veya HTML etiketleri olup olmadığını kontrol edin.
import pandas as pd
import re
# Veriyi temizleme
data = " Example Data "
clean_data = re.sub(r"<.*?>", "", data).strip()
print(clean_data)
4. Hata: Web Sayfalarının Engellenmesi
Bazı web siteleri, scraping işlemlerini engellemek için çeşitli güvenlik önlemleri alır. Eğer sitenin robots.txt dosyasına göre scraping yapmanız yasaksa, sitenin kaynak koduna erişim engellenebilir.
Çözüm: Web scraping yapmadan önce, hedef sitenin robots.txt dosyasını kontrol edin. Ayrıca, user-agent'ınızı değiştirerek sitenin güvenlik duvarlarını aşmayı deneyebilirsiniz.
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
5. Hata: Veri Çekme Süresinin Uzaması
Bazen web scraping işlemi oldukça uzun sürebilir. Bu durum, internet bağlantınızın hızına ve hedef sitenin büyüklüğüne bağlı olarak değişir.
Çözüm: Bu durumda, veri çekme işlemini parçalara bölerek veya zaman aşımı limitleri ayarlayarak sürenin kontrolünü sağlayabilirsiniz.
response = requests.get(url, timeout=10) # 10 saniyelik zaman aşımı
Sonuç
Web scraping, doğru araçlar ve tekniklerle güçlü bir araç olabilir. Ancak, karşınıza çıkan yaygın hataları bilmek ve bu hatalarla başa çıkabilmek önemlidir. Bu yazıda paylaşılan çözümleri kullanarak, Python ile web scraping işlemlerinizde daha verimli ve başarılı olabilirsiniz.