Back

Mengenal Fungsi Find dan FindAll BeautifulSoup

pada tutorial ini kita belajar mengimplementasikan bagaimana penggunaan Beautiful Soup

Studi Kasus

misalnya kita mempunyai kode HTML seperti ini

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

pastikan sudah menginstall beautifulsoup dengan perintah

pip install Beautifulsoup4

library ini dapat dicari di pypi.org

gambar library bs4
gambar library bs4

setelah melakukan instalasi coba gunakan library BeautifulSoup, contoh

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

hasilnya akan seperti ini

hasil scraping
hasil scraping

Mengenal Fungsi find() dan findAll()

dalam library BeautifulSoup terdapat dua fungsi yang paling banyak dipakai yaitu fungsi find() dan findAll()

Fungsi find()

digunakan untuk mengambil potongan kode HTML atau kode HTML secara spesifik (jika terdapat tag HTML atau class atau id yang sama lebih dari satu maka tag yang diambil adalah tag yang paling atas di halaman HTML) contoh

link = soup.find('a')
print(link)

hasilnya akan seperti ini

fungsi-find-1
fungsi-find-1

Mengambil nilai dengan atribut tertentu

contoh jika ingin mengambil nilai dari tag ‘a’ dengan nama class atau id tertentu bisa seperti ini

lacie = soup.find('a', attrs={'id':'link2'})
print(lacie)

hasilnya

‘find dengan attrs
‘find dengan attrs

jika mengambil textnya saja tambahkan .text seperti ini

lacie = soup.find('a', attrs={'id':'link2'}).text
print(lacie)

hasilnya

find hanya text saja
find hanya text saja

Fungsi findAll()

fungsi ini untuk mengambil semua tag yang sama, dan hasilnya akan dikembalikan atau di return list contoh

semua_link = soup.findAll('a')
print(semua_link)

hasilnya

fungsi findAll
fungsi findAll

untuk extract data url yang telah di temukan bisa menggunakan perulangan, contoh

semua_link = soup.findAll('a')

for i in semua_link:
    print(i.get('href'))

hasilnya

loop findAll
loop findAll

sebenarnya masih banyak fungsi yang dapat dipelajari tapi fungsi yang paling sering dan paling unum digunakan adalah fungsi find() dan findAll(), berikut kode lengkap yang telah dibuat pada materi ini

# nama file: belajar-scraping.py
# materi: mengenal find() dan findAll()

from bs4 import BeautifulSoup

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""


soup = BeautifulSoup(html_doc, 'html.parser')

link = soup.find('a')
lacie = soup.find('a', attrs={'id':'link2'}).text
elsie = soup.find(id='link1')
print(elsie.text)
semua_link = soup.findAll('a')

for i in semua_link:
    print(i.get('href'))

# print(semua_link)

# print(lacie)

Referensi

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy