Mengambil Data dengan BeautifulSoup

Melalui kelas ini, kamu diajak untuk:

  • Mengidentifikasi langkah-langkah mengambil data dengan BeautifulSoup

Memasukkan URL Halaman Web

Pertama-tama kita perlu mengakses url halaman web yang ingin kita ambil datanya. Untuk melakukan ini, kita menggunakan library requests. Lihat susunan kode di bawah ini.

page = requests.get("https://kompas.com/")

Selanjutnya, kita akan menggunakan BeautifulSoup untuk melakukan parsing dari halaman web tersebut.

soup = BeautifulSoup(page.text, 'html.parser')

Menemukan Elemen HTML dan Mengambil Data

Tugas kita sekarang adalah mencari tag elemen HTML yang ingin kita ambil datanya. Misal kita ingin mengambil data artikel-artikel yang paling sering dibaca beserta jumlah pembacanya di kompas. Ikuti langkah-langkah ini:

  • Gunakan BeautifulSoup untuk mencari seluruh elemen “div” dalam struktur HTML.
  • Deklarasikan list kosong untuk menyimpan data ketika data sudah diambil.
  • Gunakan Inspect Element untuk mencari tag, selector, dan atribut yang perlu kita identifikasi.
  • Ubah datanya ke dalam bentuk teks.
  • Ubah data ke integer untuk jumlah pembaca artikel.
  • Masukkan kedua data ke list kosong yang sudah dideklarasikan di awal.

Lihat susunan kode di bawah ini.

# menemukan seluruh tag div dalam struktur HTML web

mydivs = soup.find_all('div')

# deklarasikan list kosong untuk menyimpan data nantinya

title = []
read_count = []
trends = []

# temukan tag-tag relevan

for div in mydivs:
    data1 = div.find("h4", {"class": "most__title"})
    data2 = div.find("div", {"class": "most__read"})
    if data1 and data2 != None:
        # mengambil data-data yang berbentuk teks
        judul = data1.text
        jumlah_teks = data2.text
        # menjadikan data jumlah pembaca yang tadinya str menjadi integer
        jumlah = int((jumlah_teks[7:-5]).replace(".", ""))
        # memasukkan data ke list kosong
        title.append(judul)
        read_count.append(jumlah)

Menyimpan Data

Langkah terakhir adalah menyimpan data. Kita bisa menggunakan library pandas untuk membuat data mudah dibaca dan disimpan dalam bentuk file .csv. Lihat susunan kode di bawah ini.

# memasukkan data ke DataFrame Pandas

trends = pd.DataFrame({"title": title, "read_count": read_count})

# mengatur tanggal-bulan-tahun saat ini

today = datetime.datetime.today().strftime('%m-%d-%y')
file_name = "kompas trending {}.csv".format(today)

# menyimpan file CSV

trends.to_csv(file_name, index=False)

Pro Tips

  • Elemen HTML dalam web biasanya berpola dengan nama class yang sama.
  • Alur logika: cari divnya dahulu, kemudian masukkan sebagai function text.
  • Gunakan method integer untuk merapikan teks yang kita ambil.

Kuis

Kita ingin mengambil h3 di dalam class 'artikel_trending'. Bagaimana susunan kodenya?

Selamat, Anda telah menyelesaikan pelajaran ini
Klik untuk menyelesaikan