Анализ продукта магазина на Tokopedia

RedDeveloper
05.01.2023 06:48
Анализ продукта магазина на Tokopedia

Tokopedia - это место, где продавцы могут продавать свои товары. Товар должен быть размещен на витрине, чтобы покупателям было легче найти товар продавца.

Для получения данных о витринах магазинов в Tokopedia существует несколько Скрытых API, которые мы можем использовать, а именно ShopShowcase и ShopInfoCore.

ShopShowcase - это API, используемый для получения данных о витринах на основе идентификатора магазина.

А ShopInfoCore - это API, используемый для получения данных об идентификаторе магазина на основе обработчика магазина (название).

Пожалуйста, обратитесь к следующему примеру сценария:

import pandas as pd
import requests


def ShopInfoCore(domain: str):
    url="https://gql.tokopedia.com/graphql/ShopInfoCore"
    body = [
        {
            "operationName": "ShopInfoCore",
            "variables": {
                "id": 0,
                "domain": domain,
            },
            "query": 'query ShopInfoCore($id: Int!, $domain: String) {\n  shopInfoByID(input: {shopIDs: [$id], fields: ["active_product", "allow_manage_all", "assets", "core", "closed_info", "create_info", "favorite", "location", "status", "is_open", "other-goldos", "shipment", "shopstats", "shop-snippet", "other-shiploc", "shopHomeType", "branch-link", "goapotik"], domain: $domain, source: "shoppage"}) {\n    result {\n      shopCore {\n        description\n        domain\n        shopID\n        name\n        tagLine\n        defaultSort\n        __typename\n      }\n      createInfo {\n        openSince\n        __typename\n      }\n      favoriteData {\n        totalFavorite\n        alreadyFavorited\n        __typename\n      }\n      activeProduct\n      shopAssets {\n        avatar\n        cover\n        __typename\n      }\n      location\n      isAllowManage\n      branchLinkDomain\n      isOpen\n      shipmentInfo {\n        isAvailable\n        image\n        name\n        product {\n          isAvailable\n          productName\n          uiHidden\n          __typename\n        }\n        __typename\n      }\n      shippingLoc {\n        districtName\n        cityName\n        __typename\n      }\n      shopStats {\n        productSold\n        totalTxSuccess\n        totalShowcase\n        __typename\n      }\n      statusInfo {\n        shopStatus\n        statusMessage\n        statusTitle\n        tickerType\n        __typename\n      }\n      closedInfo {\n        closedNote\n        until\n        reason\n        detail {\n          status\n          __typename\n        }\n        __typename\n      }\n      bbInfo {\n        bbName\n        bbDesc\n        bbNameEN\n        bbDescEN\n        __typename\n      }\n      goldOS {\n        isGold\n        isGoldBadge\n        isOfficial\n        badge\n        shopTier\n        __typename\n      }\n      shopSnippetURL\n      customSEO {\n        title\n        description\n        bottomContent\n        __typename\n      }\n      isQA\n      isGoApotik\n      epharmacyInfo {\n        siaNumber\n        sipaNumber\n        apj\n        __typename\n      }\n      __typename\n    }\n    error {\n      message\n      __typename\n    }\n    __typename\n  }\n}\n',
        }
    ]

    return requests.post(url=url, json=body).json()[0]["data"]["shopInfoByID"]["result"][0]["shopCore"]["shopID"]


def ShopShowcase(sid: int):
    url="https://gql.tokopedia.com/graphql/ShopShowcase"
    body = [
        {
            "operationName": "ShopShowcase",
            "variables": {
                "sid": f"{sid}",
                "isManageShop": False,
                "hideEmpty": True,
            },
            "query": "query ShopShowcase($sid: String!, $isManageShop: Boolean, $hideEmpty: Boolean, $hideGroup: Boolean) {\n  shopShowcasesByShopID(shopId: $sid, hideNoCount: $hideEmpty, hideShowcaseGroup: $hideGroup, isOwner: $isManageShop) {\n    result {\n      id\n      title: name\n      count\n      type\n      highlighted\n      alias\n      link: uri\n      useAce\n      badge\n      __typename\n    }\n    error {\n      message\n      __typename\n    }\n    __typename\n  }\n}\n",
        }
    ]

    return requests.post(url=url, json=body).json()[0]["data"]["shopShowcasesByShopID"]["result"]


if __name__ == "__main__":
    shop_name="agreshpauthorized"  # nama (handler) toko https://www.tokopedia.com/agreshpauthorized
    shop_id = ShopInfoCore(shop_name)  # id toko
    df = pd.DataFrame(ShopShowcase(shop_id))  # etalase toko
    df.to_csv("result.csv")

Результат работы приведенного выше примера скрипта в виде данных витрин магазинов, принадлежащих AGRES - HP Authorised , магазинов, продающих ноутбуки и так далее. Все вышеперечисленные API используют метод POST с телом запроса, которое мы можем изменить.

Затем мы отобразим визуализацию данных выше с помощью Matplotlib . Пожалуйста, обратитесь к следующему примеру сценария:

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv("result.csv")
df[["title", "count"]].iloc[3:].plot(x="title", kind="barh", xlabel="Banyak Produk")


plt.show()

И результат:

И результат

Судя по изображению выше, в авторизованном магазине AGRES - HP продается много товаров в категории 'Потребительские ноутбуки', за которой следуют товары в категории 'Ноутбуки премиум-класса'.

На этом у меня все, спасибо.

Хайкал Роуи

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.