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 продается много товаров в категории 'Потребительские ноутбуки', за которой следуют товары в категории 'Ноутбуки премиум-класса'.
На этом у меня все, спасибо.
Хайкал Роуи
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.