🧲İnternet Üzerinden Veri Çekme

Python ile internet, web üzerinden veri alma, çekme (data grab, web grab)

💨 URL'den Veri Alma

Veri almanın en hızlı ve basit yolu

import urllib.request
contents = urllib.request.urlopen("http://example.com/foo/bar").read()

# Encoding işlemi için (https://stackoverflow.com/a/17615424/9770490)
encoding = "utf-8"
contents = contents.decode(encoding)

🆔 Web Kimliği UserAgent Ayarlama

  • Bazı web siteleri, isteklerin nereden geldiğini bilmeden hareket edemezler.

  • Bu sebeple isteği detaylandırmamız gerekmektedir.

  • UserAgent ile hangi tarayıcıdan ve bilgisayardan bağlandığımızı belli ederiz

HTML alanına bağlantıyı yazın, pd.read_html(html) şeklinde kullanın

from urllib.request import urlopen, Request

HTML = "" # Örn: https://en.wikipedia.org/

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}
reg_url = HTML
req = Request(url=reg_url, headers=headers) 
html = urlopen(req).read() # Pandas için kullanılacak html objesi

‍🧙‍♂ Detaylı bilgi için "[Python][Crawler]“HTTP Error 403: Forbidden” alanına bakabilirsin.

🧐 Tarayıcı Üzerinden Veriyi Bulma

  • CTRL + SHIFT + C kısayolu ile aradığınız elemanı ona tıklayarak seçin

  • Elements ekranından açılan satıra sağ tıklayın ve Copy → Copy selector deyin

  • Gelen metni bir notepad gibi bir yere kaydedin

🐍 Python Kodu ile Veriyi Çekme

  • pip install beautifulsoup4 komutu ile html verilerini işleme paketi olan bs4 paketini indirin

  • pip install requests ile html isteklerini yönetme paketi olan requests paketini indirin

  • Daha önceden kopyaladığınız selector verisini ve veriyi aldığınız url bilgisini sırasıyla SELECTOR ve URL objelerine atayın

  • İlk olarak kendimizi tanıttığımız headers verileri ile GET isteği atıp, içeriği alıyoruz ve ardından soup objemiz ile istediğim selector ile elemanı alıyoruz

📅 Tablo Verisi Alma

  • Web siteleri üzerindeki tabloları çekmek için pd.read_html kullanılır

  • Tüm tablo verileri arasında 0, 1 ... değerleri ile gezinebiliriz.

👮‍♂️ Verilerin Sağlaması Gereken Özellikler

  • Günlük hayatta veriler istediğimiz kadar basit olmaz, bunlar üzerinde işlemler yaparak uygun hale getiririz

  • Tek tablodan oluşan basit veya bağlantılı bir kaç tablodan oluşan

    • Farklı veriler için mapping ile veri tipleri birbirine benzetilir

  • Kolay analiz edilebilir formatta olan

  • Makine öğrenimine sokulabilecek veriler

  • Düşük karmaşıklığa sahip

  • Yüksek boyutlu veriler için optimizasyon

Last updated

Was this helpful?