41 poin oleh GN⁺ 2024-02-21 | 5 komentar | Bagikan ke WhatsApp

Keunggulan web scraping dengan Python

  • Sintaks sederhana: memungkinkan coding yang cepat
  • Library bawaan: urllib, lxml, dan lainnya membantu proses scraping
  • Library scraping yang matang: Beautiful Soup, Scrapy, dan lainnya
  • Serbaguna: dapat digunakan untuk membangun pipeline data
  • Interoperabilitas: mudah diintegrasikan dengan bahasa lain dan tetap bekerja baik saat performa menjadi penting

Library web scraping Python

  • BeautifulSoup: parsing HTML/XML, penelusuran dan pencarian yang fleksibel
  • Scrapy: cepat dan dapat diperluas, mendukung middleware dan crawling terdistribusi
  • Selenium: otomasi browser, menangani situs yang berpusat pada JavaScript
  • lxml: parser XML/HTML yang sangat cepat
  • pyquery: mengakses elemen HTML dengan sintaks bergaya jQuery

Persiapan untuk scraping

  • Disarankan menyiapkan virtual environment
  • Library yang diperlukan: Requests, BeautifulSoup, OS

Memilih situs web target scraping

  • Memilih halaman Wikipedia 'Daftar ras anjing'
  • HTML yang terstruktur dengan baik, beragam field data, serta menyertakan gambar

Menulis kode scraping

  • Mengimpor library yang diperlukan
  • Menyamarkan diri sebagai browser dengan User-Agent
  • Mengunduh halaman HTML melalui requests dan memvalidasinya
  • Mem-parsing HTML dengan BeautifulSoup
  • Mengekstrak data dengan selector CSS
  • Mengunduh dan menyimpan gambar

Tantangan nyata dalam web scraping dan praktik terbaik

  • Menangani konten dinamis: gunakan Selenium atau integrasi splash milik Scrapy
  • Menghindari pemblokiran: atur kecepatan permintaan, tiru browser, dan lakukan rotasi user-agent serta proxy
  • Pembatasan laju: patuhi crawl delay, gunakan proxy, dan atur permintaan secara otomatis
  • Parsing HTML yang kompleks: gunakan parser yang kuat seperti lxml dan perkuat selector

Opini GN⁺

  • Poin terpenting: Python adalah bahasa yang kuat untuk web scraping, dengan sintaks sederhana dan ekosistem library yang kaya, sehingga cocok untuk proyek web scraping dalam berbagai skala.
  • Alasan menarik: Web scraping adalah keterampilan penting untuk pengumpulan dan analisis data, dan panduan ini memberikan pengetahuan praktis yang bisa diterapkan insinyur perangkat lunak pemula ke proyek nyata.
  • Alasan bermanfaat: Web scraping dapat diterapkan di banyak bidang, dan panduan ini membantu mengembangkan keterampilan scraping yang tangguh melalui tantangan nyata dan praktik terbaik.

5 komentar

 
yangeok 2024-02-26

Untuk rendering JavaScript, Playwright memang yang terbaik. Dukungan bahasanya juga ternyata sangat luas.

Kalau dipakai bersama Scrapy, sepertinya bisa menghasilkan sinergi yang bagus.

 
ikbzbcg15 2024-02-21

Ah, zaman sekarang sih pakainya Playwright.

 
bandoche 2024-02-21

Kalau benar-benar mengerjakan scraping sebagai pekerjaan, hal yang ternyata lebih merepotkan dari dugaan adalah menangani browser (Chrome webdriver yang kadang error) dan mengatasi pemblokiran (berbagai CAPTCHA).

 
GN⁺ 2024-02-21
Komentar Hacker News
  • Penting untuk memisahkan crawling web dan scraping. Crawling adalah tahap menemukan URL dan mengambil konten HTML, sedangkan scraping adalah tahap mengekstrak data terstruktur dari HTML. Dengan memisahkan kedua tahap ini, scraper bisa diubah nanti lalu diterapkan ulang dengan cepat pada data yang sudah ada.
  • Merekomendasikan Playwright sebagai alat web scraping Python. Ini adalah alat otomasi browser yang sangat kuat dan dirancang dengan baik, dan menggunakan alat CLI shot-scraper yang memungkinkan scraping halaman web langsung dari command line.
  • Perusahaan SaaS mempromosikan produk mereka di postingan blog sebagai bagian dari pemasaran, tetapi selalu menarik ketika mereka memperkenalkan masalah itu untuk pertama kalinya kepada pemula lalu menawarkan produk mereka sendiri sebagai solusinya.
  • Akan membantu untuk memeriksa <domain>/robots.txt, yang berisi informasi berguna untuk scraping situs web, dan mengekstrak data melalui metadata terstruktur alih-alih parsing tag HTML. Ada juga pustaka yang bisa mengekstraknya sebagai JSON.
  • Mempertanyakan popularitas web scraping dengan Node.js alih-alih Python. Di npm ada paket-paket yang dibuat dengan baik untuk parsing DOM, dan karena menggunakan JavaScript, fitur-fitur DOM terasa lebih alami untuk digunakan.
  • Bisa menggunakan read_html dari pandas untuk mengambil tautan dengan sederhana. Dengan ini, data tabel dari situs web bisa diekstrak dengan mudah.
  • Sudah lelah dengan pekerjaan web scraping yang berulang dan tidak kreatif, jadi sekarang mencoba menggunakan LLM (Large Language Models) untuk mengotomatisasi seluruh proses. Menggunakan LLM untuk membuat dan menyesuaikan kode scraper agar beradaptasi dengan perubahan situs web terasa efisien.
  • Mempertanyakan berapa banyak “panduan lengkap” tentang scraping Python yang ada.
  • Penyiapan web scraping modern memerlukan browser agent, dan untuk mengambil data dari platform media sosial utama atau artikel New York Times, mungkin perlu membangun alat sendiri.
  • Pustaka requests-cache membantu saat mengerjakan scraping. Ini menggantikan pustaka requests, tetapi menyimpan cache semua respons ke database SQLite sehingga berguna untuk menyesuaikan skrip saat terkena pembatasan dari situs.
 
xguru 2024-02-21

Yang penting dari komentar ini adalah

Perusahaan SaaS mempromosikan produk mereka di blog post sebagai bagian dari pemasaran, tetapi selalu menarik ketika mereka pertama kali memperkenalkan suatu masalah kepada pemula lalu menawarkan produk mereka sendiri sebagai solusinya.

Itu dia. Kita harus selalu membaca tulisan seperti ini dengan mengingat bahwa pada akhirnya akan ada promosi produk mereka sendiri di bagian akhir.
Sebaliknya, saya rasa perusahaan-perusahaan lokal juga pada dasarnya perlu memakai cara seperti ini.