WebScrapping dengan python
Web scraping adalah teknik pengambilan data secara otomatis dari internet. Dengan teknik ini, kamu bisa mengumpulkan data besar dengan cepat, di mana hal ini berguna untuk berbagai keperluan seperti analisis data, pembuatan alat perbandingan harga, atau penelitian. Artikel ini akan membantumu memahami lebih dalam teknik web scraping menggunakan Python.
Library yang digunakan ada dua: requests dan BeautifulSoup
Install keduanya sekaligus dengan cara
pip install requests beautifulsoup4
nanti outputnya di shell kalian seperti ini:
Installing collected packages: soupsieve, beautifulsoup4
Successfully installed beautifulsoup4-4.9.3 soupsieve-2.2.1
Query Situs Web dengan requests
Coba cek apakah kita bisa mengakses website SS UG via script Python:
import requests
# URL News Section UI
url_ss = 'https://www.ui.ac.id/'
laman_ss = requests.get(url_ss)
# jika sukses, maka status query ini adalah 200, alias OK
print(f'Status GET laman SS UG: {laman_ss.status_code}')
Output yang diharapkan:
Jika 200, mari kita lihat struktur laman (dalam HTML):
# cetak HTML
print(laman_ss.content)
Menggunakan BeautifulSoup4 untuk Parsing
Cari elemen HTML <h3>
dengan nilai teks "Berita Kampus & Update". Amati kode HTML di bawahnya, kita akan melihat bahwa mereka menggunakan <div>
dengan nama kelas gdlr-core-blog-widget-content
sebagai kontainer elemen berita.
Setiap elemen item berita terdiri atas judul, ringkasan isi (maksudnya isi berita yang di-truncate)
Kita akan mencetak mereka ke layar, lalu simpan ke file teks. Tentu saja, memanfaatkan lib lain, kalian bisa juga save ke excel, misalnya dengan lib openpyxl
.
Query semua elemen dengan nama kelas gdlr-core-blog-widget-content
:
# ambil semua elemen tertentu ke dalam list
kontainer_berita = soup.find_all('div', class_='gdlr-core-blog-widget-content')
print(kontainer_berita)
Sekarang semua <div class="gdlr-core-blog-widget-content">
sudah masuk ke dalam list kontainer_berita
berkat metode find_all()
. Kita tinggal iterasi satu per satu untuk menemukan judul dan teks rangkuman.
Catatan: find_all()
menerima dua parameter: tag HTML dan nama kelasnya, jika ada. Sedangkan get_text()
mengambil inner text dari elemen dan dari semua elemen di dalam elemen itu.
# siapkan dua list kosong untuk menampung judul dan rangkuman
judul_list = []
ringkasan_list = []
for berita in kontainer_berita:
for judul in berita.find_all('h3'):
judul_string = judul.get_text()
# buang spasi yang tidak diperlukan
judul_rapi = ' '.join(str(judul_string).strip().split())
print(judul_rapi)
# append judul ke list
judul_list.append(judul_rapi)
for rangkuman in berita.find_all('div', class_='gdlr-core-blog-info-wrapper gdlr-core-skin-divider'):
rangkuman_rapi = ' '.join(str(rangkuman.get_text()).strip().split())
print(rangkuman_rapi)
# append teks rangkuman ke list
ringkasan_list.append(rangkuman_rapi)
Untuk menghapus spasi dan whitespace yang berlebihan, kita harus menggunakan trik khusus sebagaimana terlihat di judul_rapi
dan rangkuman_rapi
. Sekarang list judul_list
dan ringkasan_list
sudah terisi.
Output:
Bertahan di Posisi 1 di Indonesia versi THE Asia University Rankings 2024, Posisi UI Menanjak di Level Asia
06/05/2024
Jika sudah sampai disini, sekalian simpan ke file text:
with open('news.txt', mode='w') as berita_file:
for judul, rangkuman in zip(judul_list, ringkasan_list):
berita_file.write(judul)
berita_file.write('\n')
berita_file.write(rangkuman)
berita_file.write('\n\n')
teks yang dihasilkan akan memuat judul dan ringkasan, dipisahkan dengan baris kosong (\n\n
).
Bertahan di Posisi 1 di Indonesia versi THE Asia University Rankings 2024, Posisi UI Menanjak di Level Asia
06/05/2024
Pengadaan Tenaga Kependidikan Outsourcing FKUI Tahun 2024
29/04/2024
Sumber : prasetyadi , revou.co
Post a Comment