Tutorial Scrapy + BeautifulSoup: Data Collection untuk ML

# Tutorial 9: Scrapy + BeautifulSoup - Pengumpulan Data untuk ML ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Dasar-Dasar BeautifulSoup](#dasar-dasar-beautifulsoup) 4....

By Ruby Abdullah · · tutorial
ScrapyBeautifulSoupWeb ScrapingData CollectionETLPython

Tutorial 9: Scrapy + BeautifulSoup - Pengumpulan Data untuk ML

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Dasar-Dasar BeautifulSoup
  • Fundamental Scrapy
  • Membangun Spider Scrapy
  • Items dan Pipelines
  • Konfigurasi Middleware
  • Menangani Paginasi dan JavaScript
  • Pipeline Pembersihan Data
  • Menyimpan Data ke CSV, JSON, dan Database
  • Scraping Etis dan Pembatasan Laju
  • Membangun Dataset ML dari Data Web
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Model machine learning hanya sebaik data yang digunakan untuk melatihnya. Meskipun banyak dataset yang sudah dikurasi tersedia, proyek ML di dunia nyata sering kali memerlukan pengumpulan data kustom dari web. Baik Anda membutuhkan ulasan produk untuk analisis sentimen, artikel berita untuk klasifikasi teks, atau lowongan kerja untuk analisis pasar, web scraping adalah keterampilan penting bagi praktisi ML.

    Tutorial ini membahas dua alat Python yang paling kuat untuk web scraping: BeautifulSoup untuk mem-parsing HTML dan Scrapy untuk membangun web crawler yang skalabel dan siap produksi. Anda akan belajar cara mengekstrak data terstruktur dari situs web, membersihkannya, menyimpannya dalam berbagai format, dan mengubahnya menjadi dataset yang siap untuk ML, sambil tetap menghormati pedoman scraping yang etis.


    Prasyarat

    • Python 3.9 atau lebih tinggi
    • Pemahaman dasar tentang struktur HTML dan CSS selector
    • Keakraban dengan struktur data Python

    Instal paket yang diperlukan:

    pip install scrapy beautifulsoup4 lxml requests pandas sqlalchemy
    

    pip install scrapy-playwright # Untuk halaman yang di-render JavaScript


    Dasar-Dasar BeautifulSoup

    Mem-parsing Dokumen HTML

    from bs4 import BeautifulSoup
    

    import requests

    Ambil halaman web

    url = "https://quotes.toscrape.com/"

    response = requests.get(url)

    soup = BeautifulSoup(response.text, "lxml")

    Tampilkan judul halaman

    print(f"Judul halaman: {soup.title.string}")

    Menavigasi Pohon DOM

    # Temukan elemen berdasarkan tag
    

    semuadiv = soup.findall("div")

    print(f"Ditemukan {len(semuadiv)} elemen div")

    Temukan berdasarkan nama kelas

    kutipan = soup.findall("div", class="quote")

    print(f"Ditemukan {len(kutipan)} kutipan di halaman")

    Temukan berdasarkan ID

    spesifik = soup.find(id="main-content")

    Temukan dengan CSS selector

    penulis = soup.select("small.author")

    for p in penulis:

    print(f"Penulis: {p.gettext()}")

    Mengekstrak Data

    # Ekstrak data terstruktur dari setiap kutipan
    

    data = []

    for kutipan in soup.findall("div", class="quote"):

    teks = kutipan.find("span", class="text").gettext()

    penulis = kutipan.find("small", class="author").gettext()

    tag = [t.gettext() for t in kutipan.findall("a", class="tag")]

    data.append({

    "teks": teks,

    "penulis": penulis,

    "tag": tag,

    })

    for item in data[:3]:

    print(f'"{item["teks"][:60]}..." - {item["penulis"]}')

    print(f" Tag: {', '.join(item['tag'])}")

    Bekerja dengan Atribut dan Tautan

    # Ekstrak semua tautan dari halaman
    

    tautan = []

    for atag in soup.findall("a", href=True):

    href = atag["href"]

    tekstautan = atag.gettext(strip=True)

    tautan.append({"url": href, "teks": tekstautan})

    Ekstrak sumber gambar

    gambar = []

    for img in soup.findall("img"):

    src = img.get("src", "")

    alt = img.get("alt", "Tidak ada teks alt")

    gambar.append({"src": src, "alt": alt})

    Ekstrak atribut data

    elemen = soup.findall(attrs={"data-category": True})

    for el in elemen:

    Artikel Terkait

    Tutorial Dagster: Orkestrasi Data dengan Software-Defined Assets

    Dagster: Orkestrasi Data Modern dengan Software-Defined Assets Dagster adalah orkestrator data yang menyusun pipeline be...

    Firecrawl: Web Scraping API untuk Aplikasi AI dan LLM

    Firecrawl: Web Scraping API untuk Aplikasi AI dan LLM Firecrawl adalah managed web scraping API yang dirancang khusus un...

    Crawl4AI: Web Crawling yang Dioptimalkan untuk Pipeline AI

    Crawl4AI: Web Crawling yang Dioptimalkan untuk Pipeline AI Dalam membangun aplikasi AI modern, terutama yang berbasis Re...

    Tutorial Lengkap Prefect: Modern Workflow Orchestration untuk ML

    Tutorial Lengkap Prefect: Modern Workflow Orchestration untuk ML Prefect adalah platform workflow orchestration modern y...