À l'aide de l'API Rakuten Ichiba, j'ai essayé de générer les informations sur le produit qui s'appliquent au mot-clé vers csv.
J'ai utilisé cette "API de recherche de produits Rakuten". Service Web Rakuten: API Rakuten Product Search (version: 06/07/2017) \ | Liste des API
J'ai utilisé Jupyter Notebook comme environnement de développement. Lors de la création d'un outil à grande échelle ou d'un outil que vous souhaitez exécuter régulièrement, vous devrez peut-être le créer avec un autre éditeur de texte, mais lors de la création d'un petit outil one-shot, vous pouvez écrire un script en l'essayant petit à petit avec Jupyter Notebook. C'est très pratique car il peut être exécuté immédiatement.
Les bibliothèques utilisées sont «request» et «pandas». J'ai utilisé «request» pour accéder à l'API et «pandas» pour la manipulation des données récupérées et la sortie csv.
Cela a été fait pour une enquête sur les prix pour vendre des produits agricoles. Sur la base des informations acquises, il est supposé qu'une analyse plus approfondie sera effectuée pour prendre une décision (cette fois, des informations seront acquises).
Il existe différents sites de vente directe, mais Rakuten Ichiba est familier, propose un grand nombre de produits et fournit des API, j'ai donc pensé que ce serait facile à obtenir.
Pour utiliser l'API, vous devez d'abord créer une application à partir de la page développeur de Rakuten et obtenir un identifiant avant de commencer à écrire des scripts.
Ce site de développeurs Rakuten Service Web Rakuten: Liste des API
Créez une application à partir de "+ ID d'application du problème" en haut à droite. En utilisant l'ID d'application obtenu ici lors de son exécution dans votre propre script, vous pourrez accéder et diffuser des informations sur Rakuten Ichiba.
Ce serait bien d'avoir des API pour d'autres services Rakuten (Rakuten Travel, Rakuten Recipe, etc.) ainsi que Rakuten Ichiba. J'aimerais l'utiliser si j'en ai une chance.
Cette fois, nous allons acquérir des informations sur le produit qui incluent le nom de la variété de pomme de terre «Make-in» comme mot-clé.
Tout d'abord, importez les bibliothèques requises.
import requests
import numpy as np
import pandas as pd
Je veux l'utiliser plus tard, donc j'inclurai également NumPy
. Il n'y a pas de problème même si vous ne l'utilisez pas.
Ensuite, un script qui accède à l'API pour obtenir des informations.
REQUEST_URL = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706"
APP_ID="<Saisissez ici l'ID d'application obtenu sur le site de Rakuten>"
serch_keyword = 'Faire en'
serch_params={
"format" : "json",
"keyword" : serch_keyword,
"applicationId" : [APP_ID],
"availability" : 0,
"hits" : 30,
"page" : 1,
"sort" : "-updateTimestamp"
}
response = requests.get(REQUEST_URL, serch_params)
result = response.json()
Vous pouvez maintenant obtenir les informations sous la forme d'une liste de types de dict avec result ['Items']
. Cette fois, 30 produits ont été acquis (la valeur indiquée par «hits»: 30 »dans« serch_params ». C'est la valeur maximale qui peut être acquise en une seule fois).
De plus, par exemple, en définissant result ['Items'] [2] ['Item']
, le deuxième élément des éléments acquis peut être acquis en tant que type de dict.
Si vous jetez un coup d'œil au script
REQUEST_URL
est répertorié dans Rakuten Web Service: Rakuten Product Search API (version: 2017-07-06) \ | API List Spécifiez l'URL de la demande,
Dans ʻAPP_ID`, entrez l'ID d'application obtenu à partir de la page développeur de Rakuten précédemment.
En spécifiant la chaîne de caractères que vous souhaitez rechercher avec serch_keyword
, les produits qui correspondent à ce mot-clé seront recherchés.
Cela semble facile à utiliser même si vous acceptez les entrées utilisateur ici avec la fonction ʻinput () `de Python.
Dans serch_params
, écrivez les paramètres d'envoi d'une requête en type dict. Rakuten Web Service: Rakuten Product Search API (version: 2017-07-06) \ | Liste des API Détails dans la section "Paramètres d'entrée" Est listé. ʻApplicationId (ID d'application) est requis pour ce paramètre, et il semble que ʻAPP_ID
est requis, et l'un des mots-clés
, shopCode
, ʻitemCode,
genreIdest requis. Cette fois, je veux obtenir les informations sur le produit par le mot-clé de recherche, j'ai donc spécifié le précédent
serch_keyword pour
keyword`.
Par exemple, cette «page»: 1 »est une page d'acquisition, il semble donc que vous puissiez facilement acquérir une grande quantité d'informations sur le produit sur plusieurs pages en bouclant ce numéro avec une instruction for.
À propos, le dict que j'ai obtenu en appuyant sur l'API plus tôt est [Rakuten Web Service: Rakuten Product Search API (version: 2017-07-06) \ | API List](https://webservice.rakuten.co.jp/api Les éléments répertoriés dans la section "Paramètres de sortie" de / ichibaitemsearch /) sont inclus en tant que clés et valeurs dict.
Par exemple, si vous spécifiez la clé sous la forme résultat ['Items'] [2] ['Item'] ['itemName']
, vous pouvez obtenir le nom du produit.
Les informations acquises à ce stade sont peu pratiques à manipuler car elles contiennent des informations supplémentaires telles quelles, donc je vais faire un dict qui ne contient que les informations nécessaires.
Les données dont nous avons besoin cette fois 「itemName」「itemPrice」「itemCaption」「shopName」「shopUrl」「itemUrl」 (Plus tard, j'ai pensé que le drapeau d'expédition "postageFlag" était également nécessaire, mais il n'est pas reflété dans le script suivant).
#Tournez l'instruction for pour créer un dict
item_key = ['itemName', 'itemPrice', 'itemCaption', 'shopName', 'shopUrl', 'itemUrl']
item_list = []
for i in range(0, len(result['Items'])):
tmp_item = {}
item = result['Items'][i]['Item']
for key, value in item.items():
if key in item_key:
tmp_item[key] = value
item_list.append(tmp_item)
Vous pouvez maintenant obtenir une liste contenant des informations sur les produits de type dict.
Ce qui est resté coincé ici, c'est que j'ai dû utiliser la méthode copy ()
à ʻitem_list.append (tmp_item.copy ()) . Si vous utilisez ʻitem_list.append (tmp_item)
sans utiliser cette méthode, vous vous retrouverez avec un dict contenant plusieurs éléments d'un même produit, et vous devrez vous tordre la tête et chevaucher les jours.
L'article suivant m'a aidé.
Cette théorie semble devoir être comprise, je voudrais donc la résumer séparément.
Si vous pouvez créer une liste de types de dict, le reste n'est pas difficile et le fonctionnement de base de pandas
suffit.
Créez un bloc de données et formatez-le un peu pour le rendre plus facile à utiliser.
#Créer un bloc de données
item_df = pd.DataFrame(item_list)
#Changer l'ordre des colonnes
items_df = items_df.reindex(columns=['itemName', 'itemPrice', 'itemCaption', 'itemUrl', 'shopName', 'shopUrl'])
#Changer le nom de la colonne et le numéro de ligne:Les noms de colonne doivent être en japonais et les numéros de ligne doivent être des numéros de série commençant à 1.
items_df.columns = ['Nom du produit', 'Prix du produit', 'Description du produit', 'URL du produit', 'Nom du magasin', 'URL du magasin']
items_df.index = np.arange(1, 31)
Exportez la trame de données créée dans un fichier csv.
items_df.to_csv('./rakuten_mayqueen.csv')
Dans l'argument de la méthode df.to_csv ()
, spécifiez le chemin de destination de l'enregistrement (répertoire et nom de fichier). Cette fois, j'ai créé un fichier csv directement sous le répertoire où se trouve ce script, en utilisant un chemin relatif.
Maintenant, ouvrons les données de sortie avec Excel ou SpreadSheet.
J'ai pu bien l'obtenir!
Pour le moment, j'ai pu obtenir des informations sur les produits de Rakuten Ichiba et même générer des csv. En tant que politique future,
** (1) Collecte et mise en forme des données ** Collectez autant de données que nécessaire et façonnez-les sous une forme utilisable.
** (2) Analyse et prise de décision des données collectées ** Essayez de faire un prix raisonnable en utilisant les données comme matériel de jugement (décision) C'est pourquoi, la prochaine fois, j'aimerais collecter et formater des données un peu compliquées.
Recommended Posts