Scraping Logo Wilayah Indonesia From Wikipedia

Learn To Scribe Website With Python

Syofyan Zuhad
2 min readJan 23, 2023
wikipedia

Disclaimer: This article made for educational purpose

Jadi, kasusnya adalah tidak adanya resource yang tersedia untuk mendapatkan data wilayah seluruh Indonesia beserta logo wilayahnya.

Kalo cuma untuk data wilayahnya aja mungkin banyak ya. Saya sendiri menggunakan project milik Laravolt ini. Tapi karena masih belum ada data untuk logo tiap-tiap wilayah (kabupaten dan provinsi) nya. Maka saya coba cari resource lain untuk bisa diisi ke database.

Dan ketemulah dengan cdn dari btekno.id yang contohnya seperti ini: https://cdn.btekno.id/assets/logo/3172.png

Awalnya saya coba scrape manual tiap url yang ada. Tapi cara ini sangat tidak efisien karena kita harus melakukan request ke cdn tersebut berkali-kali. Ditambah juga ekstensi tiap logo bisa berbeda-beda antara png, jpg, jpeg, atau bahkan gif. Dan juga ternyata datanya ada yang salah, tertukar, dan belum cukup lengkap.

Karena kebutuhan project mengharuskan adanya logo tiap wilayah yang terbaru dan lengkap. Dan satu-satunya logo yang paling update dan paling lengkap adalah di wikipedia dibawah ini.

Maka sayapun memutuskan untuk melakukan scraping ke website wikipedia tersebut. Langkahnya cukup simple. Saya hanya mengikuti tutorial dari website freecodecamp dan melakukan sedikit penyesuaian dengan website yang akan saya scrape.

Hasilnya jadilah kode untuk scrape gambarnya seperti ini:

# scrap all image links from this page https://id.wikipedia.org/wiki/Daftar_lambang_kabupaten_dan_kota_di_Indonesia
# and save it to a json file

import requests
from bs4 import BeautifulSoup
import json

url = 'https://id.wikipedia.org/wiki/Daftar_lambang_kabupaten_dan_kota_di_Indonesia'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')

# get image links
image_links = []
for img in soup.find_all('img'):
image_links.append(img['src'])

# get image names
image_names = []
for img in soup.find_all('img'):
image_names.append(img['alt'])

# store to json file with each image name as key and image link as value
data = {}
for i in range(len(image_links)):
data[image_names[i]] = image_links[i]

# save to json file
with open('image_links.json', 'w') as f:
json.dump(data, f)

# print to console
print(data)

Dari hasil scrape dengan kode diatas, masih perlu ada sedikit yang perlu dirapikan lagi. Karena kode diatas melakukan scraping ke seluruh tag <img> yang ada dalam satu halaman website tadi. Jadi logo wikipedia juga akan terambil.

Untuk menjalankan kode diatas cukup mudah. Pertama, kita perlu menginstall library menggunakan pip.

pip install requests
pip install beautifulsoup4

Kemudian kita hanya perlu menjalankan:

python3 {namafile}.py

Maka secara otomatis, hasil scrape tadi akan ditampung dalam file image_links.json

Kalo ada yang request hasil jadi db nya setelah dilakukan seeder menggunakan data wilayah dari Laravolt ditambah link logo wilayah yang sudah saya scrape, silakan tulis di kolom komentar ya.

Sekian.

Semoga Bermanfaat.

--

--