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 Shopee dengan Python

Cara Scrape Data di Shopee dengan Python

                                                    Scrape Data Shopee 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://shopee.co.id/  pastinya temen-temen sudah mengetahui apa saja sih isinya shopee 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 

class Scrape:

    def __init__(self, USERNAME):

        REQ = requests.Session()

        print('Getting User ID..')

        USERID = self.GET_USERID(USERNAME, REQ)

        if USERID == False:

            print('User ID not found, try again..')

            return

        print('Getting Product list..')

        PRODUCTS = self.GET_PRODUCTS(USERID, REQ)

        if PRODUCTS == False:

            print('Product list not found, try again..')

            return

        print('Saving hTML page..')

        self.SAVE_PAGE(USERNAME, REQ)

        print('Complete...')

 

    def SAVE_PAGE(self, USERNAME, REQ):

        #url yang akan dilakukan scrapping datanya

        URL = "https://shopee.co.id/{}".format(USERNAME)

        #melakukan request data dengan metod get pada url Api

        RESPONSE = REQ.get(URL)

        #digunakan untuk men scrape semua data html

        SOUP = BeautifulSoup(RESPONSE.content, 'html.parser')

        # Menyimpan halaman utama toko dalam format html

        FILE_NAME = 'Shopee_{}.html'.format(USERNAME)

        with open(FILE_NAME, 'w') as file:

            return file.write(SOUP.prettify())

        

 

    def GET_USERID(self, USERNAME, REQ):

        HEADERS = {

            "accept-encoding": "gzip, deflate, br",

            "content-type": "application/json",

            "if-none-match": "55b03-1ae7d4aa7c47753a96c0ade3a9ea8b35",

            "origin": "https://shopee.co.id",

            "referer": "https://shopee.co.id/asusofficialshop",

            "x-api-source": "pc",

            "x-csrftoken": "8XtQ7bHlv09rlx5U4NPN6rmavFn7MvTO",

            "x-requested-with": "XMLHttpRequest",

            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2)

     AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",

            "cookie": 'SPC_IA=-1; SPC_EC=-; SPC_F=QpolQhTSikpnxRXO6T4RjIW8

    ZGHNBmBn; REC_T_ID=ac80cdde-0e7d-11e9-a8c2-3c15fb3af585; SPC_T_ID="e4t1VmH

    0VKB0NajA1BrHaDQlFRwWjTZT7o83rrHW+p16sTf1NJK7ksWWDicCTPq8CVO/S8sxnw25gNR0DL

    Qz3cv7U3EQle9Z9ereUnPityQ="; SPC_SI=k2en4gw50emawx5fjaawd3fnb5o5gu0w; SPC_U

    =-; SPC_T_IV="in3vKQSBLhXzeTaGwMInvg=="; _gcl_au=1.1.557205539.1546426854; c

    srftoken=8XtQ7bHlv09rlx5U4NPN6rmavFn7MvTO; welcomePkgShown=true; bannerShow

    n=true; _ga=GA1.3.472488305.1546426857; _gid=GA1.3.1348013297.1546426857; _f

    bp=fb.2.1546436170115.11466858'

        }

        URL = "https://shopee.co.id/api/v1/shop_ids_by_username/"

        #url Api untuk get data nama toko berdasarkan ids tokonya 

        DATA = {

            "usernames": [USERNAME]

        }

        GET_DATA = REQ.post(URL, headers=HEADERS, json=DATA)

        RESULT = GET_DATA.json()

        USERID = RESULT[0][USERNAME]

        return USERID

 

    def GET_PRODUCTS(self, USERID, REQ):

        HEADERS = {

            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) 

                AppleWebKit

                /537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

        }

        #url Api untuk get semua produk pada setiap toko

        URL = 'https://shopee.co.id/api/v2/search_items/?match_id={}

                &order=desc&page_type=shop'.format(

            USERID

        )

        GET_DATA = REQ.get(URL, headers=HEADERS)

        RESULT = GET_DATA.json()

 

        # menyimpan data yang telah di scrapping dalam format json

        FILE_NAME = 'Shopee_{}.json'.format(USERID)

        with open(FILE_NAME, 'w') as file:

            json.dump(RESULT, file)

        return RESULT['items']

Selanjutnya kita buat inputan yang akan kita gunakan dalam memanggil id toko yang akan kita panggil

URL = input('Masukkan ID toko disini: ')

Scrape(URL)

Lengkapnya

import requests

import json

from bs4 import BeautifulSoup

class Scrape:

    def __init__(self, USERNAME):

        REQ = requests.Session()

        print('Getting User ID..')

        USERID = self.GET_USERID(USERNAME, REQ)

        if USERID == False:

            print('User ID not found, try again..')

            return

        print('Getting Product list..')

        PRODUCTS = self.GET_PRODUCTS(USERID, REQ)

        if PRODUCTS == False:

            print('Product list not found, try again..')

            return

        print('Saving hTML page..')

        self.SAVE_PAGE(USERNAME, REQ)

        print('Complete...')

 

    def SAVE_PAGE(self, USERNAME, REQ):

        #url yang akan dilakukan scrapping datanya

        URL = "https://shopee.co.id/{}".format(USERNAME)

        #melakukan request data dengan metod get pada url Api

        RESPONSE = REQ.get(URL)

        #digunakan untuk men scrape semua data html

        SOUP = BeautifulSoup(RESPONSE.content, 'html.parser')

        # Menyimpan halaman utama toko dalam format html

        FILE_NAME = 'Shopee_{}.html'.format(USERNAME)

        with open(FILE_NAME, 'w') as file:

            return file.write(SOUP.prettify())

        

    def GET_USERID(self, USERNAME, REQ):

        HEADERS = {

            "accept-encoding": "gzip, deflate, br",

            "content-type": "application/json",

            "if-none-match": "55b03-1ae7d4aa7c47753a96c0ade3a9ea8b35",

            "origin": "https://shopee.co.id",

            "referer": "https://shopee.co.id/asusofficialshop",

            "x-api-source": "pc",

            "x-csrftoken": "8XtQ7bHlv09rlx5U4NPN6rmavFn7MvTO",

            "x-requested-with": "XMLHttpRequest",

            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) 

               AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98

                 Safari/537.36",

            "cookie": 'SPC_IA=-1; SPC_EC=-; SPC_F=QpolQhTSikpnxRXO6T4RjIW8ZGHNBmBn;

                 REC_T_ID=ac80cdde-0e7d-11e9-a8c2-3c15fb3af585; SPC_T_ID=

                        "e4t1VmH0VKB0NajA1BrHaDQlFRwWjTZT7o83rrHW+

                p16sTf1NJK7ksWWDicCTPq8CVO/S8sxnw25gNR0DLQz3cv7U3EQle9Z9

               reUnPityQ="; SPC_SI=k2en4gw50emawx5fjaawd3fnb5o5gu0w; SPC_U=-; SPC_T_IV

        ="in3vKQSBLhXzeTaGwMInvg=="; _gcl_au=1.1.557205539.1546426854; 

        csrftoken=8XtQ7bHlv09rlx5U4NPN6rmavFn7MvTO; welcomePkgShown=true; 

        bannerShown=true; _ga=GA1.3.472488305.1546426857; _gid=GA1.3.1348013297

        .1546426857; _fbp=fb.2.1546436170115.11466858'

        }

        URL = "https://shopee.co.id/api/v1/shop_ids_by_username/"

        #url Api untuk get data nama toko berdasarkan ids tokonya 

        DATA = {

            "usernames": [USERNAME]

        }

        GET_DATA = REQ.post(URL, headers=HEADERS, json=DATA)

        RESULT = GET_DATA.json()

        USERID = RESULT[0][USERNAME]

        return USERID

 

    def GET_PRODUCTS(self, USERID, REQ):

        HEADERS = {

            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2)

         AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

        }

        #url Api untuk get semua produk pada setiap toko

        URL = 'https://shopee.co.id/api/v2/search_items/?match_id={}&order=d

        esc&page_type=shop'.format(

            USERID

        )

        GET_DATA = REQ.get(URL, headers=HEADERS)

        RESULT = GET_DATA.json()

 

        # menyimpan data yang telah di scrapping dalam format json

        FILE_NAME = 'Shopee_{}.json'.format(USERID)

        with open(FILE_NAME, 'w') as file:

            json.dump(RESULT, file)

        return RESULT['items']

 

URL = input('Masukkan ID toko disini: ')

Scrape(URL)

            Ketiga

Selanjutnya kita akan prakktek untuk mencoba menscrape data shopee 

Setelah kita running kita bisa masukkan id toko yang kita,disini saya akan mencoba dengan nama id toko = fettynilnamuna

        jika kita sudah masukkan id tokonya pasti secara otomatis dalam folder kita muncul 2 folder baru,file html dan file json hasil scrape data toko tersebut. disitu saya sudah mendapatkan 2 file yang bernama Shopee_fettynilnamuna.html dan Shopee_68229931.json

        Nah kita sekarang sudah dapat file jsonnya selanjutnya kita bisa membuat desain htmlnya dan kita masukkan file jsonnya.

Disini saya akan membuat file html yang desainnya hampir sama dengan shopee agar kita mudah untuk menerapkannya.

disini saya akan mempraktekkan feath data json ke html dengan menggunakan java script kita bisa menggunakan metode lain 

file json yang kita dapat bernama Shopee_68229931.json 

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;

      }

    })

  );

  

Kita disitu akan membuat kolom atau tabel nama produck id dan gambar namun nantinya hasil feactnya tidak muncul image nya karna data image dari json kita tidak bentuk jpg.

Itu lah hasil scrape dan feath  data json to html dan itu masih belum sempurna...... terima kasih dan sampai jumpa di pertemuan selanjutnya..ok