How web scrape with chatgpt python cover

Birçok kişi ChatGPT veya Gemini gibi AI araçlarının işimizin çok büyük bir kısmını yaptığını, gerçek insan emeğinin yerini aldığını, hatta düşünme ve karar verme biçimimizi değiştirdiğini düşünüyor. Bu durum, işlerin ve yaratıcılığın geleceğine ilişkin endişeleri sıkça gündeme getiriyor. Peki AI gerçekten abartılmış bir tehdit mi, yoksa dengeli kullanıldığında bize yardımcı olan küçük bir asistan mı?

Web scraping’i örnek alalım. Geleneksel olarak scraper geliştirmek, güçlü kodlama bilgisi, ayrıntılara dikkat ve hata ayıklama becerisi gerektiriyordu. ChatGPT ile yeni başlayanlar bile saniyeler içinde kullanıma hazır veri kazıma betikleri oluşturabilir; profesyoneller ise tekrarlayan kodlama görevlerini AI’ye bırakarak saatler kazanabilir. AI, geliştiricilerin yerini almak yerine rutin işleri azaltan güçlü bir verimlilik aracı olarak çalışır.

Bu tür veri kazıma, veri toplayan araştırmacılar, rakiplerini izleyen işletmeler veya Python öğrenen öğrenciler için faydalı olabilir. ChatGPT’nin kod yazma ve açıklama becerisini Python’ın veri kazıma kütüphaneleriyle birleştiren herkes, verimli ve hızlı scraper’lar geliştirebilir.

Başlamak İçin İhtiyacınız Olan Temel Araçlar

Python kullanarak Amazon sayfalarında web scraping’e başlamadan önce ortamınızın doğru yapılandırıldığından emin olalım. İhtiyacınız olanlar:

  • Visual Studio Code (veya başka bir kod düzenleyici) 

VS Code’u resmî web sitesinden indirip işletim sisteminiz için kurulum yönergelerini izleyin. Ardından uygulamayı açın ve kenar çubuğundaki kare simgeye tıklayarak Python eklentisini yükleyin. Dosya – Klasör Aç seçeneğini belirleyerek projenizi oluşturmak istediğiniz klasörü açın. Betiğiniz için yeni bir Python dosyası oluşturun, örneğin scraping_gpt_test.py

  • Python ve kütüphaneleri (Requests, BeautifulSoup)

Bilgisayarınızda Python 3.x yüklü değilse, https://www.python.org/ adresinden indirebilirsiniz. Aşağıdaki komutlardan birini çalıştırarak Python’ın yüklü olup olmadığını kontrol edin:


python --version
      
        

      


python3 --version
      
        

      

Bazı sistemler hâlâ python komutunu Python 2’ye bağlar; bu nedenle Python 3 çalıştırdığınızdan emin olmak için python3 (ve pip3) kullanın. Python kütüphanelerini kullanmak için önce pip paketini aşağıdaki komutlardan biriyle yükleyin:


python -m ensurepip
      
        

      


python3 -m ensurepip
      
        

      

Ardından bilgisayarınızda Terminal’i açın ve Python kütüphanelerini şu komutla yükleyin:


pip install requests beautifulsoup4 
      
        

      


pip3 install requests beautifulsoup4 
      
        

      

Enter’a basın; paketlerin yüklenip yüklenmediğini göreceksiniz.

  • ChatGPT hesabı

Yazma, hata ayıklama ve veri kazıma betiklerinizi geliştirme amacıyla kullanacağınız ChatGPT erişmek için ücretsiz veya ücretli bir OpenAI hesabı oluşturun. 

  • DataImpulse proxy’leri

Proxy kimlik bilgilerini kullanarak proxy’leri entegre edeceğiz. Gerekli tüm bilgilere, seçtiğiniz planın ayrıntılarında bulunan DataImpulse kontrol paneli üzerinden erişebilirsiniz.

Doğru ayrıntıları Temel URL örneği bölümünden de kopyalayabilirsiniz.

  • Veri kazımak istediğiniz web sitesi

Bu eğitimde Wikipedia’yı ve nüfusa göre ülkeler listesini kullanıyoruz. Kodda bunu hedef web sitenizle değiştirmeyi unutmayın. 

👉 Her zaman kurallara uyun: güvenli ve etik veri kazıma için bir web sitesinin hizmet şartlarını ve robots.txt dosyasını veri kazımadan önce kontrol edin.

ChatGPT Python Veri Kazıma Kodu Üretebilir mi? Test edelim

1. Hedef sayfayı inceleyin ve veri kazıma için gereken ögeleri bulun.

İstediğiniz ögeye (örneğin bir ülke adı veya nüfus sayısı) sağ tıklayın ve tarayıcınızda İncele seçeneğini belirleyin. Bu işlem Geliştirici Araçları panelini açar. Doğru ögeyi seçtiğinizden emin olmak için vurgulanan HTML’nin üzerine gelin.

2. Bu ögelerin HTML kodunu kaydedin.

Ögeyi bulduktan sonra paneldeki HTML’ye sağ tıklayın ve CSS seçicisini kopyalayın.

3. ChatGPT için ayrıntılı bir prompt hazırlayın.

Şunları içeren bir prompt yazın:

  • Hedef URL;
  • Kopyaladığınız seçiciler;
  • Kullanmak istediğiniz kütüphaneler (örneğin requests, BeautifulSoup);

Proxy’lerden ve header’lardan bahsedin, ANCAK kimlik bilgilerinizi ChatGPT ile paylaşmayın.  

Prompt’unuzu ChatGPT’ye yapıştırın. Bizim prompt’umuz: 

“Python, Beautiful Soup ve Requests kütüphanelerini kullanarak bir web scraper oluşturun. time’ı içe aktarın. Hedef web sitesi: 

https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population

Amaç: Hedef sayfadaki ülkeleri ve nüfus sayılarını kazıyın. Ek koruma olarak DataImpulse proxy’lerini kullanın. Header’lar ekleyin. 

CSS seçicileri şunlardır:

  • Ülke: #mw-content-text > div.mw-content-ltr.mw-parser-output > table > tbody > tr:nth-child(2) > td:nth-child(1) > a
  • Nüfus: #mw-content-text > div.mw-content-ltr.mw-parser-output > table > tbody > tr:nth-child(2) > td:nth-child(2)

Çıktı: Kazınan tüm verileri bir CSV dosyasına kaydedin.

Ek yönergeler: Çıktı CSV’sindeki istenmeyen sembolleri kaldırın.”

ChatGPT’nin yanıtı aşağıdadır:

  • Son kodu gözden geçirip çalıştırın.

Betiği düzenleyicinize kopyalayıp çalıştırın. Seçiciler veya biçimlendirme farklıysa bazı hata ayıklama işlemleri gerekebilir. Proxy kullanıyorsanız her zaman User-Agent header’larını tutarlı erişimi desteklemek için ekleyin. import time eklemekistekler arasında gecikme kullanmanızı sağlar (time.sleep()); bu da istek yükünü dengelemeye yardımcı olur. Kod aşağıdadır: 


import requests
from bs4 import BeautifulSoup
import csv
import re
import time
# DataImpulse proxy configuration
PROXY = "http://username:[email protected]:8000"
proxies = {
    "http": PROXY,
    "https": PROXY
}
url = "https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population"
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/119.0.0.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
}

# Try with retry logic
for attempt in range(3):
    try:
        response = requests.get(url, headers=headers, proxies=proxies, timeout=15)
        response.raise_for_status()
        break
    except requests.exceptions.HTTPError as e:
        print(f"Attempt {attempt+1}: HTTP error {e}. Retrying...")
        time.sleep(2)
else:
    raise SystemExit("Failed to fetch the page after retries.")

soup = BeautifulSoup(response.text, "html.parser")

# Locate the first wikitable
table = soup.find("table", {"class": "wikitable"})
rows = table.find_all("tr")
data = []
for row in rows[1:]:  # skip header row
    cols = row.find_all("td")
    if len(cols) >= 2:
        country = cols[0].get_text(strip=True)
        population = cols[1].get_text(strip=True)

        # Clean unwanted symbols
        population = re.sub(r"\[.*?\]", "", population)  # remove [1], [note] etc.
        population = population.replace(",", "").replace("\xa0", " ").strip()

        data.append([country, population])

# Save results to CSV
with open("countries_population.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["Country", "Population"])
    writer.writerows(data)
print("Scraping completed. Data saved to countries_population.csv")

      
        






















































      

Betik çalıştığında VS Code terminaliniz şunu gösterecektir:

Şimdi countries_population.csv dosyasını açın. İçinde ülkeleri ve nüfuslarını içeren yapılandırılmış bir tablo bulacaksınız. Görevi tamamladığınız için tebrikler!

Karşılaşabileceğiniz Sorunlar

Veri kazıma sırasında işler her zaman beklediğimiz gibi gitmez. Sık görülen bazı sorunlar şunlardır: 

  1. 403 İstemci Hatası: Bazı web siteleri gerçek bir tarayıcıdan gelmiş gibi görünmeyen istekleri engeller. Özellikle proxy kullanırken User-Agent gibi header’ları her zaman ekleyin.
  2. Engellenen IP veya Hız Sınırlandırması:  Tekrarlanan istekler genellikle IP’nizi açığa çıkarır ve web siteleri erişimi reddedebilir veya doğrulama görevleri gösterebilir. Doğrulama kesintilerini azaltmak için residential proxy’leri (gerçek ev cihazlarından gelen, hızlı ve güvenilir) ya da mobile proxy’leri (mobil operatörlerden gelen, dinamik ve tespit edilmesi zor) kullanın.
  3. Zaman Aşımları veya Yavaş Yanıtlar: Web sitesi veya bağlantınız yavaş olabilir ve bu nedenle istekler başarısız olabilir. İsteklerin arasına time.sleep() ekleyin ve yeniden deneme mantığını uygulayın.
  4. Bozuk CSS Seçicileri: Web siteleri düzenlerini sık sık değiştirir; bu nedenle kaydettiğiniz seçiciler çalışmayı bırakabilir. Ögeleri tarayıcıda yeniden inceleyin ve betiğinizdeki seçicileri güncelleyin.
  5. Dağınık Veriler: HTML; ek semboller, boş değerler veya beklenmeyen biçimlendirmeler içerebilir. CSV’ye kaydetmeden önce veriyi Python’da temizleyin; örneğin özel karakterleri kaldırın veya boşlukları kırpın.

AI Destekli Web Scraping’in Geleceği Var mı?

Kısa yanıt: evet. ChatGPT gibi AI araçları geliştiricilerin yerini almıyor; onların kapasitesini artırıyor. Bu tür araçlar tekrarlayan kodlama görevlerini yürütür, veri kazıma betiklerini hızla üretir ve yaygın hatalar için çözümler önerir. AI destekli veri kazıma, profesyonellerin daha hızlı ve verimli çalışmasına, manuel kodlama yerine daha üst düzey analizlere odaklanmasına yardımcı olacaktır. Yine de dengeyi korumak önemlidir.

Elbette AI kullanırken de sorumlu biçimde veri kazımak önemlidir. Etik veri kazıma uygulamaları için güvenilir proxy’ler kullanın, hız sınırlarına uyun ve web sitesinin hizmet şartlarını izleyin.

 

*Bu eğitim yalnızca öğretim amaçlıdır. Web scraping tekniklerini gösterir. Hiç kimseyi hizmet şartlarını veya yürürlükteki yasaları ihlal ederek web sitelerinde veri kazımaya teşvik etmeyi ya da bu konuda yönlendirmeyi amaçlamaz. Veri kazıma faaliyetlerinizin her zaman etik, yasal ve web sitesi kurallarına saygılı olduğundan emin olun.

Share article: