ゼロから楽天APIで外部ファイルのJANから最安値を調べる方法

python

前提とできること

多数のJANコードや検索ワードから、それぞれの検索結果に対して、楽天市場内での最安値をcsvファイルへ出力します。

何のためかはお察しください。

この目的に対して情報がまとまっている場所がなかったので、「これだけあれば目的は達成できるよ」とかき集めた要素をまとめています。最適解ではありません。

使うもの

パソコン(私はWindows利用者です)
Googleアカウント(google colaboの使用を推奨するので)
楽天アカウント(アプリIDをとるのに必要)
楽天アプリID(APIをつかうのに必要)
Python(ローカル側用)
 requestsのモジュールはサードパーティなので別途インストール
エディタ(ローカル用、メモ帖でもダメじゃないですけど、便利)

※当初組んだ時は上記だったのですが、その後改めて勉強してみよう、と思った直後にJupyterLabやAnacondaなるツールがあるそうな。

つまりそんなことも知らずに組みましたが、なくともできる、ということでも・・まぁ・・そちらのツールを調べてやりやすい環境を作る方がよいかもしれません。

環境構築と準備

選択肢として、
・Google colaboでつくる
・ローカルでつくる
のがあります。

私は併用をお勧めします。といいますのが、Googlecolaboは本当に素晴らしいのです。
インストールも一切不要でログインするだけでプログラムをうてますし、しかもセル毎に実行することができるのでミスがないかの確認が超簡単!

ただ・・外部ファイルを利用するのがなかなか面倒です。

ですので、環境構築で躓かないためにも
・Googlecoraboで骨組みを作ることで、プログラミングの感覚を知る
・外部ファイルその後でローカルでテスト
とすれば挫折しにくいのではないかなと思います。

google colaboratoryへのログイン

まずは入れるようにしておきましょう。

Google Colaboratory

何かうまくいかなかったら、GANMA SOFT様のブログが分かりやすいです。

Google ColaboratoryならPythonですぐに学べる | ガンマソフト株式会社
機械学習やデータ分析を学ぶには、まずは参考書から始めるのが一般的です。そして、学習を始めるために、自分のパソコンに環境を構築します。そこで、多くの書籍ではAnacondaのインストールを薦めています。...

Pythonのインストール

インストールしておきましょう。Python3の方です。

Welcome to Python.org
The official home of the Python Programming Language

ここはLet’sプログラミング様のやり方が良いと思います。今のバージョンは3.8.1です。

Python 3.7.3のダウンロードとインストール
Python のダウンロードとインストール方法について解説します。2019年5月現在、最新のバージョンは Python 3.7.3 となっています。

Customize installationでインストール先を変更しないと、隠しフォルダーに入ってしまいます。まぁだからダメということもないんですけどね。

Add Python pathへのチェックは忘れないようにしましょう。後で通すのは手間です。

インストールし終えたら、Windowsホーム画面左下の「ここに入力して検索」にcmdと打ち込んで、コマンドプロンプトを立ち上げて

pythonと打ってみましょう。Python 3.8.1 (tags/v3.8.1・・・・と表示されたらインストール成功です。

requestsのインストール

そのままコマンドプロンプトで pip install requests と入れてエンターキーを押して、しばらく放っておいてあげてください。ダウンロード、インストールしてくれます。

これを入れておかないと、APIでリクエストを取りに行ったりしてくれません。pythonでは便利なパッケージが色々とあるのですけれど、標準・サードパーティ・自作とありまして。

標準はそのまま使えるもの、サードパーティはインストールすれば使えるもの、らしいです。自作は作ったことないので知りません・・

エディタのインストール

たくさんありますが、どれでもいいんじゃないかな。私はテックアカデミー様やコードキャンプ様でも挙げていたatomを使っています。入力の補助機能が便利です。

A hackable text editor for the 21st Century
At GitHub, we’re building the text editor we’ve always wanted: hackable to the core, but approachable on the first day without ever touching a config file. We c...

楽天アプリIDの取得

Rakuten Developers
楽天ウェブサービス(WEB SERVICE)は、WEBアプリケーションを構築するデベロッパー向けのサイトです。楽天グループのデータや機能を開発者様、企業の皆様にAPIやSDKを通じて提供いたします。

特に苦労なく、さらっと登録できるかと思います。アプリの名前とURLは、私は本ブログ名でやりました。詰まった際には次の方々のブログ記事内容でいけそうです。

楽天(Rakuten Developers)のアプリIDとアフィリエイトIDを取得する方法 | ヘルプ | WPアソシエイトポスト
楽天(Rakuten Developers)のアプリIDとアフィリエイトIDを取得する方法 | ヘルプ | Rakuten Developers(旧:楽天ウェブサービス)のアプリIDとアフィリエイトIDを取得する方法を紹介します。 なお、WPアソシエイトポストでは、楽天市場・楽天ブックスともに同じ1つのアプリIDとアフ...
楽天WEB SERVICEのアプリIDを取得する方法
楽天をより便利に使える楽天WEB SERVICEのアプリIDを取得する方法を紹介します。

プログラミングしていく

基礎を求めておられるようでしたら、まずはprogateの無料部分がおススメです。

Progate(プロゲート) | Learn to code, learn to be creative.
Progateはオンラインでプログラミングを学べるサービスです。プログラミングを学んでWEBアプリケーションを作ろう。

こちらでは「プログラマーになりたいんじゃなくて、道具が欲しいんだよ」という方へ向けてですので、必要な部分だけ記していきます。

APIの使い方について色々と調べたければ、私はキカガク 今西様の動画が分かりやすかったです。ぐるなびのAPIですけど。次項に進む前に一度見られた方がイメージ湧きやすいかもしれません。

PythonでぐるなびAPIを扱おう | Python活用シリーズ

保存場所を作る

デスクトップでもCドライブ下でもどこでも良いですが、一旦Cドライブ下に作っておきましょう。そしてデスクトップかエクスプローラ上でショートカットを作っておきましょう。

フォルダ名はpython_lessonで良いです。(なんでもいい)

入れ物用のファイルを作る

上記で作ったフォルダの中に
raku.py(Pythonのファイル。中にプログラムを書いていきます)
jan.txt(janコードや検索ワードを入れます)
data.csv(検索した結果が出力されます)
というファイルを作っておきましょう。()はいりません。拡張子までです。

拡張子 - Wikipedia

プログラムを書く

上段でインストールも終わっているので、最初からローカルでも大丈夫ですけれど、googlecolaboでひとつづつエラーが出ないか確認していくのが良いかと思います。

import

ふたつ入れておきましょう

import requests
import time

url

今回欲しいのは最低価格ですから、次のURLにリクエストを飛ばします。商品ナビですね。

url = 'https://app.rakuten.co.jp/services/api/Product/Search/20170426?'

辞書を作る

キカガク今西さんのやっていた内容そのままです。

params = {}
params ['applicationId'] = あなたのアプリID
params ['keyword'] = 検索したいキーワード

他、楽天APIの仕様を見てリクエストの内容を決めます。

商品価格ナビ製品検索API : 楽天プロダクト製品検索API(version:2017-04-26) | API一覧
楽天プロダクトで取り扱っている製品をキーワードやジャンルから検索することができるAPIのドキュメントです。

読み込みファイルを整える

先に作ったjan.txtに1行1ワードで羅列していきます。

読み込みファイル例

ローカルに移動する

googlecolaboでやっていた方は、この辺りでローカルに移りましょう。
全セルを選択して、raku.pyの中にコピペします。

ファイルから1行ずつ読み出して変数に入れる

for line in open(ファイル名,属性):

読み取った行を変数に入れて、requestsで飛ばします。

処理を一旦止める

楽天APIでは、具体的な秒数や回数は分かりませんが、連続してリクエストを送り続けるとエラーが返ってきますので、ワンクッションおきます。

time.sleep(秒数)

ファイルを開き、結果を書き込み、閉じる

with.open (___) as f:の方がエラーがあっても処理を続ける、クローズ漏れがない、というメリットがあるそうです。

  f = open(ファイル名,属性)
  f.write(書く内容)
  f.close()

プログラムを実行する

コマンドプロンプトを立ち上げます。(「ここに入力して検索」からcmd)

次を打ち込んで、ファイルを置いている場所へ移動します。

cd C:\python_lesson

プログラムを実行します。

raku.py

すると、data.csvにデータが溜まっていきます。

PermissionError: [Errno 13] Permission denied: ‘data.csv’と表示されるときはファイルを開きっぱなしにしているかと思いますので、閉じてください。

得られる結果

こんな感じでdata.csvに溜まっていきます。

得られる結果

もっときれいな取り方もあるかとは思うのですが・・まぁ追々で・・いま勉強しているから・・

目的はamazonと楽天の価格差からのスクリーニングですから、 表計算までくれば何とでもなるのです。

テキストのコピーはできません。
タイトルとURLをコピーしました