
Scrape Data Toko Pedia dengan Request dan BeutifulSoup
Seperti tutorial yang kemaren kita terlebih dahulu harus sudah menginstall library Request dan BeutifulSoup anda di VS Code atau program python anda.
- Dengan adanya library tersebut kita dengan cara ini bisa mengambil data shopee dalam bentuk json yang nantinya data json tersebut bisa kita gunakan sebagai json untuk website e-commers atau yang lain yang kita buat nantinya.Sehingga website yang kita buat nantinya hampir sama dengan shopee dalam segi isinya.
Langsung saja tanpa basa basi kita belajar cara menscrape datanya
Pertama
Tentunya kita harus buka terlebih dahulu website shopee nya di link https://www.tokopedia.com/ pastinya temen-temen sudah mengetahui apa saja sih isinya Toko Pedia tersebut pastinya segala yang kita butuhkan ada disitu. Seperti halnya toko atau swalayan,namun bentuknya digital.
Nah ya seperti itulah tampilan websitenya .
Tapi tenang saja kita tidak akan memilah satu persatu bagiannya kok kita hanya akan mengambil datanya saja kita jadikan data json nantinya kita bisa membuat duplikat website yang hampir mirip dengan itu....oke
Kedua
Selanjutnya setelah kita mengetahui yang diatas kita mulai buat programnya dengan menggunakan bahasa pemrograman python.
kita import request,beutifullSoup dan json nya
import requests
import json
from bs4 import BeautifulSoup
Setelah semua itu kita langsung buat script selanjutnya nantinya untuk memanggil jsonnya kita hanya perlu tahu nama id yang akan kita panggil nanti, next
Kalau tadi itu adalah awalan kita langsung sekarang masuk pada bagian prosesnya disitu nantinya terdapat banyak sintak mulai dari class sampai fuction
Lengkapnya
import requests
import json
import os
from bs4 import BeautifulSoup as bs
class tokopedia():
def __init__(self, namatoko):
self.tokourl = 'https://tokopedia.com/'+namatoko
self.namatoko = namatoko
self.headerbrowser = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:74.0)
Gecko/20100101 Firefox/74.0'}
print(self.tokourl)
self.getid()
def getid(self):
try:
req = requests.post(
self.tokourl, headers=self.headerbrowser, timeout=3.000)
print(req.status_code)
if req.status_code == 200:
print(req)
sup = bs(req.text, 'html.parser')
for i in sup.find_all('meta', attrs={'name': 'branch:deeplink:
$android_deeplink_path'}):
self.idToko = i.get('content')[5:]
print('id Toko : '+self.idToko)
self.scrapJson()
else:
print('Toko Tidak ditemukan')
except:
print('Toko tidak valid')
def scrapJson(self):
urlJson = 'https://ace.tokopedia.com/search/product/v3?shop_id={}
&rows=80&start=0&full_domain=www.tokopedia.com&scheme=https&device=
desktop&source=shop_product'.format(
self.idToko)
req = requests.get(urlJson, headers=self.headerbrowser)
self.hasilReq = req.json()
if not os.path.isdir(self.namatoko):
os.mkdir(self.namatoko)
with open('{}/{}_[detail].json'.format(self.namatoko, self.namatoko), 'w') as fileW:
json.dump(self.hasilReq, fileW)
self.showData()
def showData(self):
self.jumlahProduk = len(self.hasilReq['data']['products'])
self.fullProduk = []
print('Jumlah Produk Yang dijual : '+str(self.jumlahProduk))
for num, i in enumerate(self.hasilReq['data']['products']):
print('''{}. {}
Nama : {}
harga : {}
url : {}
image : {}
catagory : {}
'''.format(num+1, '-'*40, i['name'], i['price'], i['url'], i['image_url'],
i['category_name']))
self.fullProduk += [{'name': i['name'], 'harga':i['price'],
'link':i['url'], 'image':i['image_url'],
'category':i['category_name']}]
self.saveProduk()
def saveProduk(self):
with open('{}/{}_[produk].json'.format(self.namatoko, self.namatoko), 'w')
as fileW:
json.dump(self.fullProduk, fileW)
inputLink = input('Nama Toko : https://tokopedia.com/')
actionToko = tokopedia(inputLink)
Ketiga
Selanjutnya kita akan prakktek untuk mencoba menscrape data Toko Pedia
Setelah kita running kita bisa masukkan id toko yang kita,disini saya akan mencoba dengan nama id toko = multitrandingpr
jika kita sudah masukkan id tokonya pasti secara otomatis dalam folder kita muncul 2 folder baru,yaitu file json mengenai produknya dan json mengenai detail produk link json saya bagikan dalam github saya
kita buat file java script nya yang sudah kita hubungkan dengan file html yang kita buat tadi
// fetch
var elements = `<div class="row mx-0 mt-2" style="height: 200px">`;
var parent = document.getElementById("product");
var idx = 0;
fetch("scrape/Shopee_68229931.json")
.then((response) => response.json())
.then((json) =>
json.items.forEach((element) => {
idx++;
console.log(idx)
elements += `
<div class="col-2 pl-0">
<div
class="d-flex flex-column h-100"
style="background-color: #ffffff"
>
<div
class="w-100 h-75 position-relative"
style="background-color: #f53d2d"
>
<img
class="w-100 h-100 position-absolute"
src= ${element.images}"
alt=""
/>
</div>
<div class="w-100 d-flex flex-column px-2">
<span>${element.name}</span>
<div
class="
w-100
pb-2
d-flex
justify-content-between
align-items-center
mt-2
"
>
<span style="color: #f53d2d; font-size: 14px"
>Id${element.itemid} </span
>
<span style="color: #888; font-size: 12px"
>10+ Terjual</span
>
</div>
</div>
</div>
</div>
`;
if (idx % 6 == 0 && idx < json.items.length) {
elements += `</div><div class="row mx-0 mt-2" id="product" style="height: 200px">`;
}
if (idx == json.items.length) {
elements += `</div>`;
console.log(json.items.length)
parent.innerHTML = elements;
}
})
);
Itu lah hasil scrape dan feath data json to html dan itu masih belum sempurna...... terima kasih dan sampai jumpa di pertemuan selanjutnya..ok