Hi, I am Kime Dev

I am a frontend web developer. I can provide clean code and pixel perfect design.
I also make websites more & more interactive with web animations.

Cara Scrape Data di Toko Pedia dengan Python

Cara Scrape Data di Toko Pedia dengan Python

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 


Link

Link 2

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