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. InstalasiKamu bisa menginstall Beautiful Soup 4 menggunakan $ pip install beautifulsoup479. Package namenya $ pip install beautifulsoup480. 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 beautifulsoup481. 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:
Kedua error tersebut bisa diperbaiki dengan uninstall dan install ulang Beautiful Soup. Menginstall ParserSebelum membahas perbedaan antar berbagai parser yang berbeda yang bisa kamu gunakan dengan Beautiful Soup, mari buat kode untuk membuat sebuah soup. 1 from bs4 import BeautifulSoup 2 3 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") Objek $ pip install beautifulsoup484 bisa menerima dua argumen. Pertama adalah markup yang ingin diproses, kedua adalah parser yang ingin kamu gunakan. Beberapa contoh parser diantaranya: $ pip install beautifulsoup485, lxml, dan html5lib. Parser $ pip install beautifulsoup486 memiliki dua versi, parser HTML dan parser XML. $ pip install beautifulsoup485 adalah parser bawaan, dan tidak bisa bekerja dengan baik di Python versi lama. Kamu bisa menginstall parser lain dengan perintah berikut: 1 $ pip install beautifulsoup40 2 $ pip install beautifulsoup42 Parser $ pip install beautifulsoup486 sangat cepat dan bisa digunakan untuk mengolah HTML dengan cepat. Di sisi lain, $ pip install beautifulsoup489 sangat lambat, tapi sangat fleksibel. Berikut adalah contoh penggunaan masing-masing parser: 1 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser") 2 $ pip install beautifulsoup46 3 $ pip install beautifulsoup48 $ pip install beautifulsoup49 10 11 12 $ pip install beautifulsoup46 14 15 16 17 18 19 $ pip install beautifulsoup46 $ python setup.py install1 $ python setup.py install2 $ python setup.py install3 $ pip install beautifulsoup48 $ python setup.py install5 $ python setup.py install6 $ python setup.py install7 $ python setup.py install8 $ pip install beautifulsoup46 10 11 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 beautifulsoup486 adalah pilihan yang sangat baik. Objek pada Beautiful SoupBeautiful Soup mengurai dokumen HTML yang diberikan menjadi pohon berisi objek Python. Ada empat objek Python utama yang kamu perlu ketahui: $ pip install beautifulsoup491, $ pip install beautifulsoup492, $ pip install beautifulsoup484, dan $ pip install beautifulsoup494. Objek $ pip install beautifulsoup491 mengacu pada tag XML atau HTML dalam dokumen. Kamu bisa mengakses nama sebuah tag menggunakan $ pip install beautifulsoup496. 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 beautifulsoup497 dan $ pip install beautifulsoup498. Kamu juga bisa mengakses keseluruhan kamus atribut menggunakan $ pip install beautifulsoup499. 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 beautifulsoup492 dalam Beautiful Soup. Terdapat beberapa fungsi berguna seperti 102 untuk mengganti teks dalam tag. Kamu juga bisa mengubah $ pip install beautifulsoup492 menjadi unicode string menggunakan 104. Beautiful Soup juga membolehkan kamu mengakses komentar dalam halaman web. Komen tersebut disimpan sebagai objek $ pip install beautifulsoup494, yang merupakan sebuah $ pip install beautifulsoup492. Kamu sudah belajar tentang objek $ pip install beautifulsoup484 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 TautanKamu 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. 1 13 2 from bs4 import BeautifulSoup 3 $ pip install beautifulsoup49 18 10 from bs4 import BeautifulSoup0 Setelah membuat soup, sekarang kamu bisa mendapat judul halaman web dengan kode berikut: 1 from bs4 import BeautifulSoup2 2 from bs4 import BeautifulSoup4 3 $ pip install beautifulsoup49 from bs4 import BeautifulSoup7 10 from bs4 import BeautifulSoup9 12 14 22 16 24 Kamu juga bisa mengorek halaman web untuk informasi lain seperti judul bab atau paragraf pertama, kelas mereka, atau atribut 108-nya. 1 26 2 28 3 $ pip install beautifulsoup49 31 10 33 12 14 36 16 38 17 19 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")1 $ python setup.py install1 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")3 $ python setup.py install3 $ python setup.py install5 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")6 $ python setup.py install6 soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")8 $ python setup.py install8 10 11 12 13 14 15 16 17 18 19 26 $ pip install beautifulsoup401 $ pip install beautifulsoup402 Begitu pula kamu bisa mengiterasi semua link atau subjudul dalam dokumen menggunakan kode berikut: 1 $ pip install beautifulsoup404 2 $ pip install beautifulsoup406 3 $ pip install beautifulsoup408 $ pip install beautifulsoup49 $ pip install beautifulsoup410 Navigasi DOMKamu 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 beautifulsoup412 2 $ pip install beautifulsoup414 3 $ pip install beautifulsoup49 $ pip install beautifulsoup417 10 $ pip install beautifulsoup419 12 14 $ pip install beautifulsoup422 16 $ pip install beautifulsoup424 17 $ pip install beautifulsoup426 19 $ pip install beautifulsoup428 $ python setup.py install1 $ pip install beautifulsoup430 $ python setup.py install3 $ pip install beautifulsoup428 $ python setup.py install5 $ pip install beautifulsoup430 $ python setup.py install6 $ pip install beautifulsoup428 $ python setup.py install8 $ pip install beautifulsoup438 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 beautifulsoup484 itu sendiri, dan orang tuanya adalah None. 1 $ pip install beautifulsoup440 2 $ pip install beautifulsoup442 3 $ pip install beautifulsoup49 $ pip install beautifulsoup445 10 $ pip install beautifulsoup447 12 $ pip install beautifulsoup442 14 $ pip install beautifulsoup442 16 $ pip install beautifulsoup442 17 $ pip install beautifulsoup455 19 $ pip install beautifulsoup457 $ python setup.py install1 $ pip install beautifulsoup459 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 beautifulsoup461 2 $ pip install beautifulsoup463 3 $ pip install beautifulsoup49 $ pip install beautifulsoup466 10 $ pip install beautifulsoup468 12 14 $ pip install beautifulsoup471 16 $ pip install beautifulsoup473 17 19 $ pip install beautifulsoup476 $ python setup.py install1 $ pip install beautifulsoup478 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. PenutupSetelah 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. |