Ausgabe von Produktinformationen an csv mithilfe der Rakuten-Produktsuch-API [Python]

Einführung

Mit der Rakuten Ichiba-API habe ich versucht, die Produktinformationen für das Schlüsselwort csv auszugeben.

Ich habe diese "Rakuten-Produktsuch-API" verwendet. Rakuten-Webdienst: Rakuten-Produktsuch-API (Version: 2017-07-06) \ | API-Liste

Entwicklungsumgebung und zu verwendende Bibliotheken

Ich habe Jupyter Notebook als Entwicklungsumgebung verwendet. Wenn Sie ein umfangreiches Werkzeug oder ein Werkzeug erstellen, das Sie regelmäßig ausführen möchten, müssen Sie es möglicherweise mit einem anderen Texteditor erstellen. Wenn Sie jedoch ein kleines One-Shot-Werkzeug erstellen, können Sie ein Skript schreiben, während Sie es nach und nach mit Jupyter Notebook ausprobieren. Dies ist sehr praktisch, da es sofort ausgeführt werden kann.

Die verwendeten Bibliotheken sind "Anfrage" und "Pandas". Ich habe "request" verwendet, um die API und "pandas" für die abgerufene Datenmanipulation und die CSV-Ausgabe zu treffen.

Zweck

Dies wurde für eine Preiserhebung zum Verkauf landwirtschaftlicher Produkte durchgeführt. Basierend auf den erfassten Informationen wird davon ausgegangen, dass weitere Analysen durchgeführt werden, um eine Entscheidung zu treffen (diesmal werden Informationen erfasst).

Es gibt verschiedene Direktvertriebsstandorte, aber Rakuten Ichiba ist bekannt, hat eine große Anzahl von Produkten und bietet APIs, daher dachte ich, es wäre einfach zu bekommen.

Vorbereitung für die Rakuten-API

Um die API nutzen zu können, müssen Sie zuerst eine App von Rakutens Entwicklerseite erstellen und eine ID erhalten, bevor Sie mit dem Schreiben von Skripten beginnen.

Diese Rakuten Entwickler Seite Rakuten-Webdienst: API-Liste

Erstellen Sie eine App aus "+ App-ID ausgeben" oben rechts. Wenn Sie die hier erhaltene App-ID verwenden, wenn Sie sie in Ihrem eigenen Skript ausführen, können Sie auf Informationen zu Rakuten Ichiba zugreifen und diese streamen.

Es wäre schön, APIs für andere Rakuten-Dienste (Rakuten Travel, Rakuten Recipe usw.) sowie Rakuten Ichiba zu haben. Ich würde es gerne benutzen, wenn ich eine Chance habe.

Skript zum Abrufen von Produktinformationen

(1) Versuchen Sie, Produktinformationen durch Eingabe von Schlüsselwörtern abzurufen

Dieses Mal erhalten wir Produktinformationen, die den Kartoffelsortennamen "Make-in" als Schlüsselwort enthalten.

Importieren Sie zunächst die erforderlichen Bibliotheken.

import requests
import numpy as np
import pandas as pd

Ich möchte es später verwenden, daher werde ich auch "NumPy" einschließen. Es gibt kein Problem, auch wenn Sie es nicht verwenden. Als nächstes ein Skript, das die API aufruft, um Informationen abzurufen.

REQUEST_URL = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706"
APP_ID="<Geben Sie hier die von Rakutens Website erhaltene App-ID ein>"

serch_keyword = 'Make-in'

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()

Jetzt können Sie die Informationen in Form einer Diktat-Typ-Liste mit result ['Items'] erhalten. Dieses Mal wurden 30 Produkte erworben (der durch "Treffer" angegebene Wert: 30 "in" serch_params ". Dies ist der maximale Wert, der gleichzeitig erworben werden kann).

Darüber hinaus kann beispielsweise durch Setzen von "Ergebnis [" Elemente "] [2] [" Element "]" das zweite Element aus den erworbenen Elementen als Diktattyp erfasst werden.     Wenn Sie sich das Skript kurz ansehen

REQUEST_URL ist in Rakuten-Webdienst: Rakuten-Produktsuch-API (Version: 2017-07-06) \ | API-Liste aufgeführt. Geben Sie die Anforderungs-URL an. Geben Sie unter "APP_ID" die App-ID ein, die Sie zuvor auf der Entwicklerseite von Rakuten erhalten haben.

Durch Angabe der Zeichenfolge, die Sie mit "serch_keyword" suchen möchten, werden Produkte durchsucht, die diesem Schlüsselwort entsprechen. Es scheint einfach zu sein zu sein, selbst wenn Sie hier Benutzereingaben mit Pythons input () Funktion akzeptieren.

Schreiben Sie in serch_params die Parameter zum Senden einer Anfrage in dikt Typ. Rakuten-Webdienst: Rakuten-Produktsuch-API (Version: 2017-07-06) \ | API-Liste Details im Abschnitt "Eingabeparameter" Ist aufgelistet. Es scheint, dass für diesen Parameter "applicationId" (Anwendungs-ID) erforderlich ist und dafür "APP_ID" angegeben ist und eines der Schlüsselwörter "keyword", "shopCode", "itemCode" und "genreId" erforderlich ist. Dieses Mal möchte ich die Produktinformationen über das Suchwort erhalten, daher habe ich das vorherige "serch_keyword" für "keyword" angegeben.

Zum Beispiel ist diese "Seite": 1 eine Erfassungsseite, so dass Sie anscheinend leicht eine große Menge von Produktinformationen über mehrere Seiten erfassen können, indem Sie diesen numerischen Wert mit einer for-Anweisung in einer Schleife durchlaufen.

(2) Erstellen Sie einen Diktattyp, der die erforderlichen Produktinformationen enthält

Übrigens lautet das Diktat, das ich durch früheres Klicken auf die API erhalten habe, Rakuten-Webdienst: Rakuten-Produktsuch-API (Version: 2017-07-06) \ | API-Liste Die im Abschnitt "Ausgabeparameter" von / ichibaitemsearch /) aufgeführten Elemente sind als Diktatschlüssel und -werte enthalten.

Wenn Sie beispielsweise den Schlüssel als "Ergebnis" angeben, können Sie den Produktnamen abrufen.

Die zu diesem Zeitpunkt erfassten Informationen sind unpraktisch zu handhaben, da sie so wie sie sind zusätzliche Informationen enthalten. Daher werde ich ein Diktat erstellen, das nur die erforderlichen Informationen enthält.

Die Daten brauchen wir diesmal 「itemName」「itemPrice」「itemCaption」「shopName」「shopUrl」「itemUrl」 (Später dachte ich, dass die Versandflagge "postageFlag" ebenfalls notwendig ist, aber sie spiegelt sich nicht im folgenden Skript wider).

#Drehen Sie die for-Anweisung, um ein Diktat zu machen
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)

Jetzt können Sie eine Liste mit Produktinformationen vom Typ dikt erhalten.

Was hier hängen blieb, war, dass ich die copy () Methode unteritem_list.append (tmp_item.copy ())verwenden musste. Wenn Sie "item_list.append (tmp_item)" ohne diese Methode verwenden, erhalten Sie ein Diktat, das mehrere Artikel eines Produkts enthält, und Sie müssen den Kopf drehen und die Tage überspannen.

Der folgende Artikel hat mir geholfen.

Wenn Sie eine Variable vom Typ dict an eine Python-Liste anhängen, verhält sich die Variable wie ein Zeiger ... · GitHub

Diese Theorie scheint verstanden zu werden, daher möchte ich sie separat zusammenfassen.

(3) Formatieren Sie Daten mit Pandas

Wenn Sie eine Liste mit Diktattypen erstellen können, ist der Rest nicht schwierig und die grundlegende Bedienung von "Pandas" ist ausreichend. Erstellen Sie einen Datenrahmen und formatieren Sie ihn ein wenig, um die Verwendung zu vereinfachen.

#Erstellen Sie einen Datenrahmen
item_df = pd.DataFrame(item_list)

#Ändern Sie die Reihenfolge der Spalten
items_df = items_df.reindex(columns=['itemName', 'itemPrice', 'itemCaption', 'itemUrl', 'shopName', 'shopUrl'])

#Ändern Sie den Spaltennamen und die Zeilennummer:Spaltennamen sollten in Japanisch sein und Zeilennummern sollten Seriennummern sein, die mit 1 beginnen.
items_df.columns = ['Produktname', 'Produktpreis', 'Produktbeschreibung', 'Produkt-URL', 'Speichername', 'URL speichern']
items_df.index = np.arange(1, 31)

(4) CSV-Ausgabe

Geben Sie den erstellten Datenrahmen in eine CSV-Datei aus.

items_df.to_csv('./rakuten_mayqueen.csv')

Geben Sie im Argument der Methode "df.to_csv ()" den Speicherzielpfad (Verzeichnis und Dateiname) an. Dieses Mal habe ich eine CSV-Datei direkt unter dem Verzeichnis erstellt, in dem sich dieses Skript befindet, und dabei einen relativen Pfad verwendet.

Öffnen wir nun die Ausgabedaten mit Excel oder SpreadSheet.

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

Ich konnte es gut bekommen!

abschließend

Vorerst konnte ich Produktinformationen von Rakuten Ichiba erhalten und sogar CSV ausgeben. Als zukünftige Politik,

** (1) Datenerfassung und -formung ** Sammeln Sie so viele Daten wie nötig und formen Sie sie zu einem Formular, das verwendet werden kann.

** (2) Analyse und Entscheidungsfindung der gesammelten Daten ** Versuchen Sie, einen angemessenen Preis zu erzielen, indem Sie die Daten als Beurteilungsmaterial verwenden (Entscheidung)   Deshalb möchte ich beim nächsten Mal ein wenig komplizierte Daten sammeln und formatieren.

Recommended Posts

Ausgabe von Produktinformationen an csv mithilfe der Rakuten-Produktsuch-API [Python]
Sammeln Sie Produktinformationen und Prozessdaten mit der Rakuten-Produktsuch-API [Python].
Aggregieren und analysieren Sie Produktpreise mit der Rakuten Product Search API [Python]
[Python-pptx] Gibt PowerPoint-Schriftinformationen mit Python in CSV aus
Geben Sie die Ergebnisse der Nachsuche mithilfe der Mattermost-API in eine Datei aus
[Python] Sprechen mit OpenJTalk und Talk API (bis zur Sprachausgabe)
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Ich habe versucht, die Informationen des Webs mit "Requests" und "lxml" abzurufen.
Holen Sie sich GitHub-Informationen mit PyGithub
Dies und das mit reflektieren
Berechnen Sie den Informationsgewinn mit NLTK
Versuchen Sie es mit pytest-Overview und Samples-
Sammeln Sie Produktinformationen und Prozessdaten mit der Rakuten-Produktsuch-API [Python].
Suchen Sie Twitter mit Python
[Rails] So erhalten Sie Standortinformationen mithilfe der Geolocation-API
Verwenden Sie die Such-API der National Parliament Library in Python
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Mit Python auf Twitter posten
Suchalgorithmus mit word2vec [Python]
Schreiben Sie mit Python in csv
Rufen Sie github api in Python auf, um Informationen zur Pull-Anforderung zu erhalten
[Python] So kratzen Sie eine lokale HTML-Datei und geben sie mit Beautiful Soup als CSV aus
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Python-Handspiel (RDKit-Deskriptorberechnung: SDF zu CSV mit Pandas)
So installieren Sie Python mit Anaconda
[Python] Laden von CSV-Dateien mit Pandas
[Python] Mit Python in eine CSV-Datei schreiben
[Python3] Google übersetzt Google Übersetzung ohne Verwendung von API
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Verwendung der Python-API von OpenPose
Gesamtleistung in Python (mit Funktools)
Versuchen Sie es mit der Aktions-API von Python argparse
[Django] Befehl zum Ausgeben von QuerySet an csv
Wie benutzt man Bing Search API?
Interaktives Ausgeben von BPE mithilfe von Python-Flüchen
Führen Sie Ansible über Python mithilfe der API aus
[Python] Verwendung der Typetalk-API
Suche nach Tiefenpriorität mit Stack in Python
[Python] API zum Senden von Google Mail erstellen
In der XML-Datenbank (BaseX) gespeichertes XML-Dokument in das CSV-Format konvertieren (mit Python)
Klicken Sie auf die Rakuten-Ranking-API, um das Ranking einer beliebigen Kategorie in CSV zu speichern
Suchen Sie nach Synonymen aus der Wortliste (csv) von Python Japanese WordNet
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Vorverarbeitung mit Python. Konvertieren Sie die Tag-Suchergebnisse von Nico Nico-Videos in das CSV-Format
Sammeln von Informationen von Twitter mit Python (Twitter API)
Homebrew Python Teil 3 - Das Produktsuchprogramm von Amazon
Versuchen Sie es mit der Wunderlist-API in Python
Von Python bis zur Verwendung von MeCab (und CaboCha)
Dateneingabe / -ausgabe in Python (CSV, JSON)
Einführung in die diskrete Ereignissimulation mit Python # 1
Versuchen Sie, die Kraken-API mit Python zu verwenden
Massenposting an Qiita: Team mit Qiita API
Geben Sie Farbzeichen mit Python zu hübsch aus
[Python] Konvertieren Sie CSV-Dateibegrenzer in Tabulatortrennzeichen
Python-Protokoll mit GAE an die Konsole ausgeben
Tweet mit der Twitter-API in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Lesen Sie Python csv und exportieren Sie es nach txt
Speichern Sie BigQuery-Tabellen mithilfe von Python in GCS