PENGENALAN BEAUTIFULSOAP

 BEAUTIFULSOUP DAN REQUEST

Oleh : Nabila Marsyanda

 Web Scraping Menggunakan BeautifulSoup

Pada materi kali ini kita akan belajar Web Scraping Menggunakan BeautifulSoup. Ada berbagai cara dan metode untuk mendapatkan data dari internet salah satunya melalui data scraping. Selain data scraping anda juga dapat mendapatkan data melalui data crawling. Untuk data scrapping sendiri penggunaanya beragam seperti pada toko online atau online shop yang biasaya digunakan oleh para dropshipper untuk memudahkan mereka dalam mengelola toko online nya. Sedangkan untuk data crawling , contoh penggunaannya sering kita temui pada mesin pencari di google. Data yang muncul pada mesin pencari ketika kita mengetikkan suatu keyword pada kolom pencarian tersebut merupakan hasil crawling.

Apa itu BeautifulSoup ?

BeautifulSoup merupakan library bawaan dari Python untuk parsing HTML dan XML . BeautifulSoup bekerja dengan parser bawaan python atau parser lain lxml atau html5lib untuk mempermudah anda dalam mengambil data dari suatu situs web. Pada saat ini beautiful soup telah sampai pada versi yang ke 4. Untuk kalian yang menggunakan Python3 tidak perlu khuwatir karena Library BeautifulSoup ini telah ada pada Python versi 3.

Memulai Web Scraping Menggunakan BeautifulSoup

Langsung saja kita mulai tutorial web scraping kita kali ini menggunakan library BeautifulSoup kali ini. Pada tutorial pembelajaran web scraping python menggunakan beautifulsoup ini saya tidak menggunakan objek website asli untuk dilakukan scrapping akan tetapi pada tutorial ini kita akan berfokus ke konsep serta cara penggunaanya . Berikut adalah tutorialnya :

  • Pada tutorial yang pertama ini kita akan mencoba untuk melakukan scrapping terhadap semua data yang berada didalam tag <html> berikut adalah scribtnya :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from bs4 import BeautifulSoup
htmltxt = '''
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Web Scraping</h1>
<a href="webku.html">Link ke Webku</a>
</body>
</html>
'''
 
soup = BeautifulSoup(htmltxt, 'lxml')
print("Hasil Pertama :")
print(soup)
print("Hasil Kedua :")
print(soup.text)
print("Hasil ketiga :")
print(soup.text.strip())

Hasilnya adalah sebagai berikut :


Penjelasan :

Dari scribt diatas diketahui jika beautiful soup membutuhkan 2 argumen yaitu pada argumen pertama adalah markup yang ingin diproses dan argumen yang kedua adalah parser yang ingin digunakan. Soup berfungsi untuk menampilkan keseluruhan hasil scraping sedang soup.text akan menampilkan hasil scraping data yang berupa teks saja dan soup.text.strip() berfungsi untuk menampilkan data teks serta menghilangkan jarak diantara hasil teksnya.

  • Pada tutorial yang kedua ini kita akan mempelajari tentang cara mengambil data pada suatu tag html tertentu sehingga hasilnya pun menjadi semakin spesifik. Berikut adalah contoh dari scribtnya :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from bs4 import BeautifulSoup
htmltxt = '''
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Web Scraping</h1>
<a href="webku.html">Link ke Webku</a>
</body>
</html>
'''
soup = BeautifulSoup(htmltxt, 'lxml')
print(soup.h1)
print(soup.h1.text)
print(soup.a)
print(soup.a.text)
print(soup.a['href'])

Hasilnya adalah sebagai berikut :

Penjelasan :

Soup.h1 digunakan untuk mengambil semua data yang mempunyai tag <h1> , sedangkan soup.h1.text berfungsi untuk melakukan mengambil semua data text yang berdada didalam tag <h1> . Soup.a berfungsi untuk
mengambil data yang memiliki tag a sedangkan soup.a.text berfungsi untuk mengambil data text yang berada didalam tag <a>, sedangkan soup.a[‘href’] berfungsi untuk mengambil data link pada tag <a> .

  • Pada tutorial yang ke tiga ini kita akan mempersempit lagi pengambilan datanya sehingga data yang dihasilkan menjadi semakin akurat. Teknik ini digunakan jika didalam suatu script html banyak memiliki tag ganda semisal didalam suatu halaman website memiliki sepuluh tag <div> sehingga jika kita akan menggunakan teknik pada tutorial yang kedua tadi maka hasil yang didapatkan pun adalah sepuluh data. Untuk mengatasi hal tersebut kita dapat menggunakan fungsi find() atau find_all() dengan parameter berupa kelas atau id pada tag html untuk mengambil datanya sehingga hasilnya akan menjadi semakin akurat. Berikut adalah contoh scribtnya :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from bs4 import BeautifulSoup
htmltxt = '''
<!DOCTYPE html>
<html>
<head>
 
</head>
<body>
<h1>Web Scraping</h1>
<a href="webku.html">Link ke Webku</a>
<div class="dua"> tes </div>
<p>
    ini hanya percobaan
</p>
</body>
</html>
'''
soup = BeautifulSoup(htmltxt, 'lxml')
print("Ambil Text dari link : ")
print(soup.find('a').text)
print("Ambil Text Paragraf : ")
print(soup.find('p').text)
print("Ambil Data Paragraf : ")
print(soup.find_all('p'))
print("Ambil Text dari link di Class dua")
print(soup.find("div", attrs={'class':'dua'}))

Hasilnya adalah sebagai berikut :

Penjelasan :

Fungsi find(‘a’).text berfungsi untuk menemukan tag <a> dan mengambil data text yang berada didalamnya , sedangkan fungsi find(‘p’).text digunakan untuk menemukan tag paragraf atau tag <p> dan mengambil data text yang berada didalamnya. Untuk fungsi find_all(‘p’) digunakan untuk mengambil semua data yang memiliki tag <p> sedangkan fungsi find(“div”, attrs={‘class’:’dua’}) digunakan untuk mengambil data yang memiliki tag <div> dengan kelas dua atau jika ditulis keseluruhan adalah “<div class:’dua’></div>”

  • Pada yang ke empat tadi kita sudah mempelajari teknik pengambilan data dengan menggunakan atrribut kelas pada suatu tag , namun dari hal tersebut terdapat suatu problem dimana jika kita ingin mengambil data dari tag tertentu akan tetapi pada tag tersebut tidak memiliki atribut kelas maupun id ?. Hal tersebut dapat diatasi dengan cara menggunakan kelas atau id pada tag pembungkus yang kita ingin ambil datanya. Berikut adalah contoh scribtnya :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from bs4 import BeautifulSoup
htmltxt = '''
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Web Scraping</h1>
<div class="dua">
    <a href="webku.html">Link ke Webku</a>
</div>
</body>
</html>
'''
soup = BeautifulSoup(htmltxt, 'lxml')
print("Ambil Text dari link di Class dua")
d = soup.find("div", attrs={'class':'dua'})
 
link = d.find('a')
print(link.text)

.Hasilnya adalah sebagai berikut :


Penjelasan :

Dari script diatas fungsi “find(“div”, attrs={‘class’:’dua’})” akan digunakan untuk mengambil data yang memiliki tag <div class=”dua”> kemudian datanya akan disimpan kedalam variabel bernamaa d . Hasil data yang disimpan pada variabel d ini kemudian diambil lagi datanya yang memiliki tag <a> dan hasilnya disimpan pada variabel link. Pada akhir scribt data text yang berada pada isi dari variabel link akan ditampilkan sehingga hasilnya seperti pada gambar diatas.

Sekian artikel saya yang membahas tentang belajar web scraping dengan python menggunakan beautifulsoup kali ini . 










Komentar

Postingan populer dari blog ini

PEMANFAATAN FUNGSI FIND_ALL

DASAR PEMOGRAMAN BACKEND