Last Updated on February 16, 2022 by
Pyhton adalah bahasa pemrograman dengan seribu kegunaan. Dulu, kita sudah pernah membahas cara melakukan analisis dan pengolahan big data memakai Python kini, kita akan belajar cara web scraping Python.
Sudahkah Anda pernah mendengar apa itu web scraping? Web scraping adalah salah satu strategi SEO yang sangat bermanfaat dalam dunia bisnis. Banyak perusahaan besar ternama saat ini melakukan web scraping Python sebagai salah satu metode untuk melancarkan bisnisnya.
Anda yang bekerja sebagai programmer juga perlu mengetahui apa itu web scraping serta cara scraping web dengan Python untuk mempermudah kelancaran bisnis sendiri ataupun melancarkan karir diterima pekerjaan di perusahaan ternama. Sudah siap belajar web scraping Python? Yuk kita langsung simak pembahasan lengkapnya berikut ini. Selamat membaca!
Table of Contents
Apa Itu Web Scraping?
Sudah pernah mendengar istilah ‘web scraping’? Atau, Anda masih bertanya-tanya apa itu web scraping? Web scraping adalah sebuah metode pengumpulan data dari website dan melakukan analisa data-data secara online.
Ada juga yang mendefinisikan web scraping adalah proses pendataan informasi milik para kompetitor atau pesaing bisnis, sehingga Anda bisa memperoleh gambaran terkait medan persaingan. Namun selain itu, web scraping bisa digunakan untuk banyak aktivitas bisnis lainnya, mulai dari mencari leads, meriset kondisi dan minat pasar target, meriset kompetitor, dan seterusnya.
Inti mekanisme web scraping adalah mengumpulkan data dari internet dan website, kemudian menyimpan data-data tersebut di file spreadsheet seperti Google Sheet atau Microsoft Excel. Web scraping dapat dilakukan dengan 2 cara umum, yakni manual dan otomatis. Metode web scraping manual dilakukan dengan cara men-copy dan paste informasi aneka website pesaing secara manual. Kemudian, Anda dituntut untuk melakukan analisa data sendiri.
Cara kedua adalah melakukan web scraping dengan bahasa pemrograman (koding), browser extention, atau aplikasi pembantu. Cara ini juga dikenal dengan nama web scraping otomatis. Web scraping Python termasuk ke dalam mekanisme web scraping otomatis.
Python memang terkenal sebagai bahasa pemrograman yang unik, sebab kegunaannya cenderung lebih banyak berorientasi pada analisa dan pengolahan data. Pada bagian akhir dari artikel ini, kami akan mengajak Anda untuk melihat bagaimana cara scraping web dengan Python.
Mengapa Anda Perlu Belajar Web Scraping Python?
Kenapa kita perlu tahu tentang web scraping Python? Seperti yang sempat disinggung sebelumnya, web scraping Python mempunyai banyak manfaat menarik – khususnya untuk Anda yang saat ini bekerja di sebuah perusahaan atau sedang mengelola bisnis sendiri.
Beberapa manfaat dari mengaplikasikan web scraping Python adalah:
Mampu Melakukan Investigasi ke Perusahaan Lain
Menguasai web scraping Python sama dengan Anda telah memegang kunci menuju proses investigasi ke perusahaan lain. Anda bisa melihat-lihat secara lebih mendalam dan detil tentang perusahaan tersebut dari website dan media sosial mereka saja menggunakan metode web scraping Python. Nantinya, Anda bisa lebih mudah memahami insight perusahaan pesaing
Mudah Memperoleh Leads
Web scraping Python memungkinkan Anda lebih mudah “meng-copy dan paste” list follower dari media sosial dan website perusahaan pesaing untuk Anda gunakan sebagai target pasar baru di tahap permulaan bisnis. Anda bisa memperoleh informasi penting seperti list e-mail user untuk Anda coba hubungi dan tawarkan produk, atau mendapat data-data demografi user untuk bahan segmentasi pasar.
Membantu Penentuan Harga Terbaik
Menentukan harga memang perkara gampang-gampang susah. Namun dengan web scraping, Anda bisa lebih mudah meriset beragam komponen penentu harga seperti posisi brand, harga-harga milik kompetitor, biaya dan juga tenaga produksi. Alhasil, Anda bisa dengan lebih mudah menentukan harga terbaik.
Mudah Menganalisis dan Membandingkan Data Besar
Web scraping bisa dipakai untuk membandingkan data-data dalam jumlah besar, seperti review konsumen. Untuk Anda yang bekerja atau memiliki perusahaan dengan ribuan testimoni, Anda bisa lebih cepat dalam menganalisa semua review konsumen memakai web scraping Python. Web scraping Python bisa mendokumentasikan semua data secara cepat dan dalam tampilan yang lebih mudah dibaca atau dicerna user.
Bagaimana? Setelah membaca ragam manfaat web scraping, apakah Anda sudah tidak sabar untuk mengetahui cara melakukan web scraping memakai bahasa pemrograman Python? Yuk lanjutkan scroll ke bagian selanjutnya untuk mengetahui jawabannya!
Pedoman Dasar Web Scraping Python
Tibalah kita kini di pedoman dasar melakukan web scraping memakai bahasa pemrograman Python. Seperti yang sudah kita pelajari bersama, web scraping merupakan metode khusus untuk mengumpulkan dan mendownload data-data dari web internet, memilah-memilih data, hingga akhirnya menyalurkan data-data ke bagian lain untuk diproses.
Di bawah ini, kita akan melihat bagaimana melakukan web scraping simpel untuk mengumpulkan data judul buku fiksi terbaik di internet dengan bahasa pemrograman Python:
Instalasi Scraper
Untuk memulai, Anda akan memerlukan scraper Python web terlebih dahulu, yakni Python dan lingkungan virtual Python 3. Anda bisa mengonfigurasinya seperti contoh:
$ python3 -m venv venv
$ . ./venv/bin/activate
Kemudian, lanjutkan dengan menginstal 2 paket, yakni BeautifulSoup4 (untuk mengatasi semua proses HTML) dan request (untuk mengajukan permintaan HTTP). Instal BeautifulSoup4 dengan pip:
$ pip install requests BeautifulSoup4
Setelahnya, jalankan editor teks > buat file baru (Anda bebas menamainya apa saja). Contoh nama file: bukufiksi.py > lanjutkan dengan melakukan import ke file:
from requests import get
from requests.exceptions import RequestException
from contextlib import closing
from bs4 import BeautifulSoup
Buat Permintaan Web
Selanjutnya, mari kita buat permintaan web dengan mendownload halaman web. Untuk tugas ini, Anda akan memerlukan paket requests (fungsi: requests.get). Jalankan fungsi:
def simple_get(url):
"""
Attempts to get the content at `url` by making an HTTP GET request.
If the content-type of response is some kind of HTML/XML, return the
text content, otherwise return None
"""
try:
with closing(get(url, stream=True)) as resp:
if is_good_response(resp):
return resp.content
else:
return None except RequestException as e:
log_error('Error during requests to {0} : {1}'.format(url, str(e)))
return None
def is_good_response(resp):
"""
Returns true if the response seems to be HTML, false otherwise
"""
content_type = resp.headers['Content-Type'].lower()
return (resp.status_code == 200
and content_type is not None
and content_type.find('html') > -1)
def log_error(e):
"""
It is always a good idea to log errors.
This function just prints them, but you can
make it do anything.
"""
print(e)
Setelah menjalankan fungsi di atas, Anda seharusnya akan memperoleh konten HTML untuk halaman web yang diminta. Sebagai catatan, fungsi simple_get dapat membuat GET request dan menampung 1 URL argumen. Namun semisal terjadi error seperti server down atau URL rusak, maka function yang Anda buat akan kembali ‘none’. Untuk memastikan kembali, Anda bisa menguji simple_get :
>>> from bukufiksi import simple_get
>>> raw_html = simple_get('https://realpython.com/blog/')
>>> len(raw_html)
33878>>> no_html = simple_get('https://realpython.com/blog/nope-not-gonna-find-it')
>>> no_html is None
True
Melakukan Wrangling HTML Memakai BeautifulSoup
Tahap selanjutnya adalah melkukan wranging HTML memakai BeautifulSoup. Wranging HTML ini adalah proses pemilihan, pemilahan dan ekstraksi HTML. Sistem konstruktor BeautifulSoup dapat memparsing data string HTML yang baku. Sebagai hasilnya, Anda bisa mendapatkan objek (metode untuk melihat dan memanipulasi konten teks dan nodus DOM) yang menjadi cerminan struktur dokumen HTML.
Contoh dokumen HTML adalah:
<!DOCTYPE html>
<html>
<head>
<title>Contrived Example</title>
</head>
<body>
<p id="fruit"> I am the fruit</p>
<p id="banana"> I am the banana</p>
</body>
</html>
Semisal HTML contoh di atas tersimpan di file contrived.html. Kemudian, Anda mengaplikasikan BeautifulSoup pada data HTML di atas seperti:
>>> from bs4 import BeautifulSoup
>>> raw_html = open('contrived.html').read()
>>> html = BeautifulSoup(raw_html, 'html.parser')
>>> for p in html.select('p'):
... if p['id'] == 'banana':
... print(p.text)'I am the banana'
Alternatif lainnya, Anda bisa mencoba metode lain berikut ini untuk menjalankan wranging HTML dengan BeautifulSoup:
- Urai HTML mentah. Caranya: kirim data ke konstruktor BeautifulSoup > data diolah memakai backend parser ‘html.parser’ > input argumen kedua.
- Pakai metode select (html.select(‘p’) dengan CSS untuk menscan unsur dokumen. Caranya: html.select(‘p’) > kembalikan list elemen paragraf > setiap elemen ‘p’ punya atribut HTML yang bisa diakses di data ‘dict’ > ganti if p[‘id’] == ‘banana’ > cek jika id atribut sama dengan string ‘banana’ yakni <p id=”banana”> HTML.
Mencari Nama Buku dengan BeautifulSoup
- Di sini, Anda bisa memakai browser untuk mengecek dokumen web untuk lebih cepat. Jika dicermati, nama-nama buku yang Anda telusuri di web sumber akan muncul dalam teks konten memakai tag <li>.
- Tampilan web memakai Python:
>>> raw_html = simple_get('http://www.websitesumber.com/fiksi/bukufiksi.htm')
>>> html = BeautifulSoup(raw_html, 'html.parser')
>>> for i, li in enumerate(html.select('li')):
print(i, li.text)0 Harry Potter
Narnia
Percy Jackson
Cinderella
The Hunger Games1 Snow White
Narnia
Mulan
The Hunger Games2 Little Mermaid
Narnia
he Hunger Games 3 The Hunger Games
The Hunger Games4 The Hunger Games# 5 ... and many more...
Pada contoh di atas tertera beberapa elemen <li> mempunyai sejumlah nama yang terpisah oleh karakter baris baru sementara lainnya berisi satu nama saja.
- Tulis fungsi untuk mendapatkan 1 daftar nama buku:
def get_names():
"""
Downloads the page where the list of fiction book is found
and returns a list of strings, one per title
"""
url = 'http://www.websitesumber.com/fiksi/bukufiksi.htm'
response = simple_get(url) if response is not None:
html = BeautifulSoup(response, 'html.parser')
names = set()
for li in html.select('li'):
for name in li.text.split('\n'):
if len(name) > 0:
add(name.strip())
return list(names) # Raise an exception if we failed to get any data from the url
raise Exception('Error retrieving contents at {}'.format(url)) - Terakhir, tambahkan setiap nama ke Python set untuk memastikan daftar nama Anda tidak double / duplikat.
Sampai di sini sudah cukup. Nantinya Anda sudah bisa mendapatkan kumpulan data mentah scraping yang bisa disalurkan ke proses pengolahan data selanjutnya.
Demikianlah pembahasan kali ini tentang web scraping Python. Semoga artikel edisi kali ini mampu menambah wawasan Anda, ya! Temukan juga lebih banyak artikel menarik dan berwawasan IT lainnya hanya dari Appkey.id. Sayonara!
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.