Web scraping adalah teknik otomatisasi yang memungkinkan Anda mengekstrak data dari situs web secara terstruktur. Python, berkat pustaka-pustakanya yang kuat, menjadi bahasa pilihan utama untuk tugas ini. Panduan ini akan memandu Anda langkah demi langkah dalam melakukan cara scraping web dengan python menggunakan pustaka populer seperti `Requests` dan `BeautifulSoup`.
Python menawarkan sintaksis yang bersih dan mudah dibaca, menjadikannya cepat untuk dikembangkan. Selain itu, ekosistemnya kaya akan alat spesifik untuk *scraping* dan analisis data. Dua pustaka utama yang akan kita gunakan adalah:
Sebelum memulai, pastikan Anda telah menginstal Python. Selanjutnya, instal pustaka yang diperlukan melalui terminal atau command prompt:
pip install requests beautifulsoup4
Langkah pertama dalam cara scraping web dengan python adalah meminta konten dari URL target. Pustaka `requests` sangat ideal untuk ini.
Misalkan kita ingin mengambil halaman utama dari contoh situs fiktif:
import requests
URL = 'http://example.com' # Ganti dengan URL yang ingin Anda scrape
try:
response = requests.get(URL)
# Pastikan permintaan berhasil (kode status 200)
response.raise_for_status()
html_content = response.text
print("Konten berhasil diambil.")
except requests.exceptions.RequestException as e:
print(f"Terjadi kesalahan saat mengambil URL: {e}")
exit()
Penting untuk selalu memeriksa kode status (`response.raise_for_status()`). Jika hasilnya bukan 200 OK, berarti ada masalah dengan permintaan (misalnya, 404 Not Found atau 403 Forbidden).
Setelah mendapatkan kode HTML sebagai teks mentah, kita perlu menguraikannya agar mudah diakses. Di sinilah BeautifulSoup berperan.
from bs4 import BeautifulSoup
# Menguraikan konten HTML
soup = BeautifulSoup(html_content, 'html.parser')
# Contoh: Mencari semua tag judul (h1)
judul = soup.find('h1')
if judul:
print(f"Judul Utama: {judul.text}")
else:
print("Tag H1 tidak ditemukan.")
Metode `.find()` akan mengembalikan elemen pertama yang cocok, sementara `.find_all()` akan mengembalikan daftar (list) dari semua elemen yang cocok dengan kriteria pencarian Anda.
Seringkali, data yang Anda inginkan berada di dalam elemen yang memiliki kelas CSS atau ID tertentu. Ini adalah cara paling efisien untuk menargetkan informasi.
Jika Anda ingin mengambil semua tautan (``) yang berada di dalam div dengan kelas "product-list":
# Cari kontainer utama
container = soup.find('div', class_='product-list')
if container:
# Cari semua tag 'a' di dalam kontainer tersebut
links = container.find_all('a')
print(f"\nDitemukan {len(links)} tautan produk:")
for link in links:
teks = link.text.strip()
url = link.get('href')
print(f"- Teks: {teks} | URL: {url}")
else:
print("\nContainer 'product-list' tidak ditemukan.")
Perhatikan penggunaan `class_='product-list'`. Dalam Python, `class` adalah kata kunci, sehingga BeautifulSoup memerlukan tanda garis bawah (`_`) ketika mencari berdasarkan atribut kelas HTML.
Meskipun Python memudahkan Anda mengambil data, sangat penting untuk mengingat etika digital:
[URL Target]/robots.txt. File ini memberi tahu bot bagian mana dari situs yang boleh atau tidak boleh diakses.Dengan memahami dasar-dasar `requests` dan `BeautifulSoup`, Anda telah menguasai fondasi dari cara scraping web dengan python. Untuk kasus yang lebih kompleks, seperti situs yang sangat bergantung pada JavaScript, Anda mungkin perlu beralih ke alat yang lebih canggih seperti Selenium.