Exportez les informations produit au format CSV à l'aide de l'API de recherche de produits Rakuten [Python]

introduction

À 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

Environnement de développement et bibliothèques à utiliser

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.

Objectif

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.

Se préparer à gérer l'API Rakuten

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.

Script pour obtenir des informations sur le produit

(1) Essayez d'obtenir des informations sur le produit en saisissant des mots clés

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édentserch_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.

(2) Créez un type de dict contenant les informations nécessaires sur le produit

À 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é.

Lorsque vous ajoutez une variable de type dict à une liste Python, la variable se comporte comme un pointeur ... · GitHub

Cette théorie semble devoir être comprise, je voudrais donc la résumer séparément.

(3) Formater les données avec des pandas

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)

(4) sortie csv

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.

スクリーンショット 2020-09-01 20.28.15.png

J'ai pu bien l'obtenir!

en conclusion

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

Exportez les informations produit au format CSV à l'aide de l'API de recherche de produits Rakuten [Python]
Collectez des informations sur les produits et traitez les données à l'aide de l'API de recherche de produits Rakuten [Python]
Regroupez et analysez les prix des produits à l'aide de l'API Rakuten Product Search [Python]
[Python-pptx] Afficher les informations de police PowerPoint au format csv avec python
Exporter les résultats de la recherche de publication dans un fichier à l'aide de l'API Mattermost
[Python] Talk en utilisant OpenJTalk et l'API Talk (jusqu'à la sortie vocale)
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
J'ai essayé d'obtenir les informations du Web en utilisant "Requests" et "lxml"
Obtenir des informations GitHub à l'aide de PyGithub
Ceci et cela en utilisant Reflect
Calculer le gain d'informations à l'aide de NLTK
Essayez d'utiliser pytest-Overview and Samples-
Collectez des informations sur les produits et traitez les données à l'aide de l'API de recherche de produits Rakuten [Python]
Rechercher sur Twitter avec Python
[Rails] Comment obtenir des informations de localisation à l'aide de l'API de géolocalisation
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
Publier sur Twitter en utilisant Python
Algorithme de recherche utilisant word2vec [python]
Écrire en csv avec Python
Appelez l'API github en python pour obtenir des informations sur la demande d'extraction
[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Jeu manuel Python (calcul du descripteur RDKit: SDF en CSV à l'aide de Pandas)
Comment installer Python à l'aide d'Anaconda
[Python] Chargement de fichiers csv à l'aide de pandas
[Python] Ecrire dans un fichier csv avec Python
[Python3] Google translate google translation sans utiliser l'API
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Comment utiliser l'API Python d'OpenPose
Puissance totale en Python (en utilisant functools)
Essayez d'utiliser l'API d'action de Python argparse
[Django] Commande pour générer QuerySet en csv
Comment utiliser l'API Bing Search
Sortie interactive de BPE à l'aide de curses python
Exécutez Ansible à partir de Python à l'aide de l'API
[Python] Comment utiliser l'API Typetalk
Recherche de priorité de profondeur à l'aide de la pile en Python
[Python] Créer une API pour envoyer Gmail
Convertir un document XML stocké dans une base de données XML (BaseX) au format CSV (en utilisant Python)
Accédez à l'API de classement Rakuten pour enregistrer le classement de n'importe quelle catégorie au format CSV
Recherche de synonymes dans la liste de mots (csv) par Python Japanese WordNet
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Prétraitement avec Python. Convertir les résultats de recherche de balises de la vidéo Nico Nico au format CSV
Collecter des informations sur Twitter avec Python (API Twitter)
Homebrew Python Partie 3 - Programme de recherche de produits d'Amazon
Essayez d'utiliser l'API Wunderlist en Python
De Python à l'utilisation de MeCab (et CaboCha)
Entrée / sortie de données en Python (CSV, JSON)
Introduction à la simulation d'événements discrets à l'aide de Python # 1
Essayez d'utiliser l'API Kraken avec Python
Publication groupée sur Qiita: équipe utilisant l'API Qiita
Sortir les caractères de couleur en joli avec python
[Python] Convertit les délimiteurs de fichier csv en délimiteurs de tabulation
Sortie du journal Python vers la console avec GAE
Tweet à l'aide de l'API Twitter en Python
Connectez-vous à Slack à l'aide de requêtes en Python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
Lire Python csv et exporter vers txt
Vider les tables BigQuery dans GCS à l'aide de Python