Tutorial web scraping dengan beautifulsoup di python
Data Collection, Python

Web Scraping Part 3 : Tutorial Web Scraping dengan BeautifulSoup di Python

Pada artikel sebelumnya kita telah sukses melakukan web scraping single-quote dari halaman http://quotes.toscrape.com/ dengan library BeautifulSoup di Python. Selanjutnya kita akan mengambil multi-quote dari satu halaman

Kalau kita lihat http://quotes.toscrape.com/ pada halaman pertama terdapat 20 quote. Berikut adalah contoh 3 quote-nya

Tutorial web scraping dengan beautifulsoup di python
Quote website http://quotes.toscrape.com/

Jika dilakukan inspect element maka diketahui bahwa tag HTML yang digunakan oleh setiap quote adalah sama

Tutorial web scraping dengan beautifulsoup di python

Berikut adalah outer HTML dari quote

Bahwa setiap quote berada di tag <div> dengan nama class quote

Di dalam tag <div> baru terdapat tag-tag HTML lainnya untuk menyimpan konten seperti quote, author, dan tags

Berikut adalah satu contoh kode HTML dari satu qoute

Tutorial web scraping dengan beautifulsoup di python

Scrap all quotes

Karena setiap quote kode HTML yang digunakan sama gunakan fungsi find_all() untuk mengambil semua konten quote dalam satu halaman

Jika menggunakan fungsi find() hanya quote pertama yang akan diambil (seperti pada materi scraping single quote)

Gunakan tag <div> dengan nama class quote

from bs4 import BeautifulSoup
import requests


page = requests.get("http://quotes.toscrape.com/")
soup = BeautifulSoup(page.content, 'html.parser')

quotes = soup.find_all('div', class_='quote')

print(quotes)
Tutorial web scraping dengan beautifulsoup di python
quote yang berhasil diambil (contoh 2 quotes)

Setelah mendapatkan konten dari setiap quote selanjutnya setiap quote akan diambil konten text quote, author, dan tags -nya

Untuk memudahkan mengambil konten setiap quote gunakan perulangan.

Note : Silahkan baca materi perulangan di python

Berikut adalah kodenya untuk mengambil setiap elemen di quote menggunakan perulangan

for q in quotes:
    quote = q.find('span', class_='text').text
    author = q.find('small', class_='author').text
    tags = [tag.text for tag in q.find('div', class_='tags').find_all('a', class_='tag')]

quotes merupakan list dari semua quote yang diambil dengan BeautifulSoup

Setiap iterasi dalam quotes akan diambil konten quote, author, dan tags -nya

Hasilnya adalah

Tutorial web scraping dengan beautifulsoup di python

Final Code

Berikut adalah final code untuk web scraping multi-quote dalam di halaman pertama

from bs4 import BeautifulSoup
import requests


page = requests.get("http://quotes.toscrape.com/")
soup = BeautifulSoup(page.content, 'html.parser')

quotes = soup.find_all('div', class_='quote')

for q in quotes:
    quote = q.find('span', class_='text').text
    author = q.find('small', class_='author').text
    tags = [tag.text for tag in q.find('div', class_='tags').find_all('a', class_='tag')]

    print(quote)
    print(author)
    print(tags)

Leave a Reply

Your email address will not be published.