Tutorial web scraping beautifulsoup di python
Data Collection, Python

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

Pada artikel pertama yaitu pengenalan web scraping dengan BeautifulSoup di Python telah dijelaskan konsep dasar dari library BeautifulSoup dan Struktur web http://quotes.toscrape.com/

Tutorial Web Scraping dengan BeautifulSoup di Python
Struktur Web http://quotes.toscrape.com/

Contents

Scraping Single Quote

Untuk permulaan kita akan coba scrape data dari satu quote yaitu quote pertama dari Albert Einstein

Dibutuhkan library requests untuk mengambil halaman website yang akan di-scraping

import requests

Kemudian kita gunakan fungsi get() dengan parameter alamat website

requests.get("http://quotes.toscrape.com/")

Kita cek status_code jika hasil yang dikeluarkan adalah <Response [200]> berarti koneksi sukses

Sedangkan untuk mengambil halaman HTML yang diakses kita gunakan properti content

Berikut adalah potongan kode penggunaan library request

import requests

page = requests.get("http://quotes.toscrape.com/")

print(page.status_code)
print(page.content)
Tutorial Web Scraping dengan BeautifulSoup di Python

Ekstrak Halaman dengan BeautifulSoup

Selanjutnya gunakan library BeautifulSoup untuk mengambil element HTML yang ingin disimpan seperti konten quote, author, tag dengan menggunakan class attribut di kode HTML.

Setelah mengetahui class attribut gunakan fungsi find() atau find_all() untuk mengekstrak konten dari halaman website

BeautifulSoup memanfaatkan atribut class / id untuk mengambil data dari halaman web.

Untuk mengetahui class attribut dari elemen yang ingin diekstrak gunakan tool inspect element di browser sepert pada materi part 1

#1 Quote

Inspect quote pertama dari Albert Einstein dan dapatkan nama class yang digunakan

Tutorial Web Scraping dengan BeautifulSoup di Python

Tag yang digunakan adalah <span> dengan nama classs text

Gunakan library BeautifulSoup dengan fungsi find() untuk mengekstrak quote pertama

from bs4 import BeautifulSoup
import requests


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

quote = soup.find('span', class_='text')

print(quote)

Hasilnya

Jika hanya ingin mengambil quote saja tanpa tag HTML tambarkan properti text di akhir fungsi find()seperti ini

quote = soup.find('span', class_='text').text
#2 Author

Tag yang digunakan untuk Author adalah <small> dengan nama class author

Tutorial Web Scraping dengan BeautifulSoup di Python

Tambahkan kode berikut setelah kode diatas

author = soup.find('small', class_='author')

print(author)

Hasilya

#3 Tags

Dan terakhir adalah tags dari quote

Tutorial Web Scraping dengan BeautifulSoup di Python

Untuk element tags agak sedikit lebih rumit karena setiap tags diapit oleh <a> yang berada di dalam <div> sehingga tags harus disimpan ke dalam List

Dibutuhkan fungsi find() untuk mengambil konten <div> dan fungsi find_all() untuk mengambil isi dari <a>

Tambahkan kode berikut untuk mengambil text dari tags yang disimpan ke dalam List

tags = [tag.text for tag in soup.find('div', class_='tags').find_all('a', class_='tag')]

print(tags)

Final Code

Berikut adalah final code untuk scraping single quote

from bs4 import BeautifulSoup
import requests


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

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

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

Materi selanjutnya adalah mengambil banyak quote dari 1 halaman website http://quotes.toscrape.com/

3 Comments

  1. turorial nya sangat membantu bang …terima kasih …lanjutkan tutorial coding scrape nya bang

  2. bikin tutorial selenium juga bang

  3. Saya kurang paham untuk ngambil tags nya, bingung kenapa pake [ ], kenapa ada tag.text di awal for. Selebihnya untuk tutorial nya mudah di pahami, dari part 1 juga jadi seru ngikutinnya. Terima kasih.

Leave a Reply

Your email address will not be published. Required fields are marked *