Анализ продукта магазина на 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 продается много товаров в категории 'Потребительские ноутбуки', за которой следуют товары в категории 'Ноутбуки премиум-класса'.

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

Хайкал Роуи

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js

21.03.2023 12:23

Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из самых популярных фреймворков для веб-разработки сегодня является React.js. Если вы начинающий веб-разработчик и хотите узнать больше о React.js, это...

Разница между Angular и React
Разница между Angular и React

21.03.2023 07:56

React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые делают их подходящими для различных проектов веб-разработки.

Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit

20.03.2023 14:01

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

Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра

20.03.2023 12:24

Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие действия:

ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023

20.03.2023 11:15

О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц. HTML обеспечивает структуру страницы CSS (визуальное и звуковое) оформление для различных устройств. Наряду с графикой и сценариями HTML и CSS являются...

Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular

20.03.2023 08:46

Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?