-->

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
Kode Lengkap

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}') # cetak HTML #print(laman_ss.content) from bs4 import BeautifulSoup # ini sebaiknya ditaruh di bagian atas file soup = BeautifulSoup(laman_ss.content, 'html.parser') # print(soup.prettify()) # ambil semua elemen tertentu ke dalam list kontainer_berita = soup.find_all('div', class_='gdlr-core-blog-widget-content') #print(kontainer_berita) # 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) with open('berita.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')


Sumber : prasetyadi , revou.co
See Also :