Cara menggunakan python scrape html file

Pada tutorial sebelumnya, saya memperlihatkan bagaimana cara menggunakan modul Requests untuk mengakses halaman web menggunakan Python. Tutorial tersebut membahas banyak topik seperti membuat request GET/POST dan mengunduh benda seperti gambar atau PDF menggunakan pemrograman. Satu hal yang tidak ada di tutorial tersebut adalah panduan untuk menyimpan halaman web yang kamu akses menggunakan Request untuk mengambil informasi yang kamu butuhkan.

Pada tutorial ini kamu akan belajar tentang Beautiful Soup, library Python untuk mengambil data dari file HTML. Fokus tutorial ini adalah mempelajari dasar-dasar dari library tersebut, dan topik lanjutan akan dibahas pada tutorial berikutnya. Perlu diketahui tutorial ini menggunakan Beautiful Soup 4 untuk semua contoh.

Instalasi

Kamu bisa menginstall Beautiful Soup 4 menggunakan $ pip install beautifulsoup4 79. Package namenya $ pip install beautifulsoup4 80. Seharusnya bisa bekerja untuk Python 2 dan Python 3.

1$ pip install beautifulsoup4

Jika kamu tidak punya pip, kamu bisa mengunduh source tarball Beautiful Soup 4 dan menginstallnya menggunakan $ pip install beautifulsoup4 81.

1$ python setup.py install

BeautifulSoup awalnya di-package sebagai kode Python 2. Saat kamu menginstallnya dengan Python 3, akan secara otomatis diupdate menjadi kode Python 3. Kode tidak akan diubah kecuali kamu menginstall package-nya. Berikut ada beberapa kesalahan umum yang mungkin akan kamu temui:

  • $ pip install beautifulsoup4 82 "No module named HTMLParser" terjadi jika kamu menjalankan kode versi Python 2 pada Python 3.
  • $ pip install beautifulsoup4 82 "No module named html.parser" terjadi jika kamu menjalankan kode versi Python 3 pada Python 2.

Kedua error tersebut bisa diperbaiki dengan uninstall dan install ulang Beautiful Soup.

Menginstall Parser

Sebelum membahas perbedaan antar berbagai parser yang berbeda yang bisa kamu gunakan dengan Beautiful Soup, mari buat kode untuk membuat sebuah soup.

1from bs4 import BeautifulSoup 23soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")

Objek $ pip install beautifulsoup4 84 bisa menerima dua argumen. Pertama adalah markup yang ingin diproses, kedua adalah parser yang ingin kamu gunakan. Beberapa contoh parser diantaranya: $ pip install beautifulsoup4 85, lxml, dan html5lib. Parser $ pip install beautifulsoup4 86 memiliki dua versi, parser HTML dan parser XML.

$ pip install beautifulsoup4 85 adalah parser bawaan, dan tidak bisa bekerja dengan baik di Python versi lama. Kamu bisa menginstall parser lain dengan perintah berikut:

1$ pip install beautifulsoup4 02$ pip install beautifulsoup4 2

Parser $ pip install beautifulsoup4 86 sangat cepat dan bisa digunakan untuk mengolah HTML dengan cepat. Di sisi lain, $ pip install beautifulsoup4 89 sangat lambat, tapi sangat fleksibel. Berikut adalah contoh penggunaan masing-masing parser:

1soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 2$ pip install beautifulsoup4 63$ pip install beautifulsoup4 8$ pip install beautifulsoup4 9101112$ pip install beautifulsoup4 6141516171819$ pip install beautifulsoup4 6$ python setup.py install 1$ python setup.py install 2$ python setup.py install 3$ pip install beautifulsoup4 8$ python setup.py install 5$ python setup.py install 6$ python setup.py install 7$ python setup.py install 8$ pip install beautifulsoup4 61011

Perbedaan yang digambarkan di atas hanya penting jika kamu mengolah HTML yang tidak valid. Tapi, sebagian besar HTML di web tidak memiliki format yang benar, dan mengetahui perbedaan ini akan membantu kamu saat mendebug parsing error dan menentukan parser mana yang ingin kamu gunakan dalam project. Secara umum, parser $ pip install beautifulsoup4 86 adalah pilihan yang sangat baik.

Objek pada Beautiful Soup

Beautiful Soup mengurai dokumen HTML yang diberikan menjadi pohon berisi objek Python. Ada empat objek Python utama yang kamu perlu ketahui: $ pip install beautifulsoup4 91, $ pip install beautifulsoup4 92, $ pip install beautifulsoup4 84,  dan $ pip install beautifulsoup4 94.

Objek $ pip install beautifulsoup4 91 mengacu pada tag XML atau HTML dalam dokumen. Kamu bisa mengakses nama sebuah tag menggunakan $ pip install beautifulsoup4 96. Kamu juga bisa mengubah nama tag. Perubahan nama akan terlihat pada markup yang dihasilkan oleh Beautiful Soup.

Kamu bisa mengakses berbagai atribut berbeda seperti kelas dan is dari tag menggunakan $ pip install beautifulsoup4 97 dan $ pip install beautifulsoup4 98. Kamu juga bisa mengakses keseluruhan kamus atribut menggunakan $ pip install beautifulsoup4 99. Kamu juga bisa menambah, menghapus, atau mengubah atribut sebuah tag. Atribut seperti 100 sebuah elemen yang bisa menyimpan banyak nilai disimpan sebagai list.

Teks dalam sebuah tag disimpan sebagai $ pip install beautifulsoup4 92 dalam Beautiful Soup. Terdapat beberapa fungsi berguna seperti 102 untuk mengganti teks dalam tag. Kamu juga bisa mengubah $ pip install beautifulsoup4 92 menjadi unicode string menggunakan 104.

Beautiful Soup juga membolehkan kamu mengakses komentar dalam halaman web. Komen tersebut disimpan sebagai objek $ pip install beautifulsoup4 94, yang merupakan sebuah $ pip install beautifulsoup4 92.

Kamu sudah belajar tentang objek $ pip install beautifulsoup4 84 di bagian sebelumnya. Objek tersebut digunakan untuk mewakili keseluruhan dokumen. Karena bukan merupakan sebuah objek sebenarnya, objek ini tidak memiliki nama atau atribut.

Mengambil Judul, Heading, dan Tautan

Kamu bisa mengekstrak judul halaman dan data lain dengan mudah menggunakan Beautiful Soup. Mari scrape halaman Wikipedia tentang Python. Pertama, kamu perlu mengambil markup dari halaman menggunakan kode dari tutorial modul Requests untuk mengakses halaman web.

1132from bs4 import BeautifulSoup 3$ pip install beautifulsoup4 91810from bs4 import BeautifulSoup 0

Setelah membuat soup, sekarang kamu bisa mendapat judul halaman web dengan kode berikut:

1from bs4 import BeautifulSoup 22from bs4 import BeautifulSoup 43$ pip install beautifulsoup4 9from bs4 import BeautifulSoup 710from bs4 import BeautifulSoup 91214221624

Kamu juga bisa mengorek halaman web untuk informasi lain seperti judul bab atau paragraf pertama, kelas mereka, atau atribut 108-nya.

1262283$ pip install beautifulsoup4 931103312143616381719soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 1$ python setup.py install 1soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 3$ python setup.py install 3$ python setup.py install 5soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 6$ python setup.py install 6soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 8$ python setup.py install 81011121314151617181926$ pip install beautifulsoup4 01$ pip install beautifulsoup4 02

Begitu pula kamu bisa mengiterasi semua link atau subjudul dalam dokumen menggunakan kode berikut:

1$ pip install beautifulsoup4 042$ pip install beautifulsoup4 063$ pip install beautifulsoup4 08$ pip install beautifulsoup4 9$ pip install beautifulsoup4 10

Navigasi DOM

Kamu bisa menjelajah di dalam DOM tree menggunakan nama tag biasa. Merantaikan nama tag bisa membantu kamu menjelajah lebih dalam. Contohnya, kamu bisa mendapatkan link pertama di paragraf pertama di halaman Wikipedia tersebut menggunakan 109. Semua link di paragraf pertama bisa diakses menggunakan 110.

Kamu juga bisa mengakses semua anak dari sebuah tag sebagai list dengan menggunakan 111. Untuk mendapatkan anak dengan indeks tertentu, kamu bisa gunakan 112. Kamu juga bisa mengiterasi anak-anak dari tag menggunakan atribut 113.

113 dan 115 berguna ketika kamu ingin mengakses langsung atau keturunan pertama dari sebuah tag. Untuk mendapatkan semua keturunan, kamu bisa menggunakan atribut 116.

1$ pip install beautifulsoup4 122$ pip install beautifulsoup4 143$ pip install beautifulsoup4 9$ pip install beautifulsoup4 1710$ pip install beautifulsoup4 191214$ pip install beautifulsoup4 2216$ pip install beautifulsoup4 2417$ pip install beautifulsoup4 2619$ pip install beautifulsoup4 28$ python setup.py install 1$ pip install beautifulsoup4 30$ python setup.py install 3$ pip install beautifulsoup4 28$ python setup.py install 5$ pip install beautifulsoup4 30$ python setup.py install 6$ pip install beautifulsoup4 28$ python setup.py install 8$ pip install beautifulsoup4 38

Kamu juga bisa mengakses orang tua dari elemen menggunakan atribut 117. Begitu pula kamu bisa mengakses semua leluhur elemen menggunakanatribut  118. Orang tua dari tag 119 adalah objek $ pip install beautifulsoup4 84 itu sendiri, dan orang tuanya adalah None.

1$ pip install beautifulsoup4 402$ pip install beautifulsoup4 423$ pip install beautifulsoup4 9$ pip install beautifulsoup4 4510$ pip install beautifulsoup4 4712$ pip install beautifulsoup4 4214$ pip install beautifulsoup4 4216$ pip install beautifulsoup4 4217$ pip install beautifulsoup4 5519$ pip install beautifulsoup4 57$ python setup.py install 1$ pip install beautifulsoup4 59

Kamu bisa mengakses elemen saudara sebelum dan sesudah menggunakan atribut 121 dan 122.

Untuk dua elemen menjadi saudara, mereka harus memiliki orang tua yang sama. Artinya anak pertama dari elemen tidak akan memiliki saudara sebelumnya. Begitu pula, anak terakhir dari sebuah elemen tidak akan punya saudara berikutnya. Dalam halaman web sebenarnya, saudara sebelum dan berikutnya dari sebuah elemen kemungkinan besar adalan karakter ganti baris.

Kamu juga bisa mengiterasi semua saudara sebuah elemen menggunakan 123 dan 124.

1$ pip install beautifulsoup4 612$ pip install beautifulsoup4 633$ pip install beautifulsoup4 9$ pip install beautifulsoup4 6610$ pip install beautifulsoup4 681214$ pip install beautifulsoup4 7116$ pip install beautifulsoup4 731719$ pip install beautifulsoup4 76$ python setup.py install 1$ pip install beautifulsoup4 78

Kamu bisa pindah ke elemen setelah elemen ini menggunakan atribut 125. Untuk mengakses elemen sebelumnya, gunakan atribut 126.

Begitu pula kamu bisa mengiterasi semua elemen sebelum dan sesudah sebuah elemen menggunakan 127 dan 128.

Penutup

Setelah menyelesaikan tutorial ini, kamu sudah mengetahui perbedaan utama antar berbagai parser HTML. Kamu juga seharusnya sudah bisa menjelajah halaman web dan mengambil data penting. Hal ini bisa berguna ketika kamu ingin menganalisis semua judul bagian atau tautan dari sebuah situs web.

Pada bagian berikutnya dari seri ini, kamu akan belajar bagaimana menggunakan library Beautiful Soup untuk mencari dan memodifikasi DOM.

Postingan terbaru

LIHAT SEMUA