前提とできること
多数のJANコードや検索ワードから、それぞれの検索結果に対して、楽天市場内での最安値をcsvファイルへ出力します。
何のためかはお察しください。
この目的に対して情報がまとまっている場所がなかったので、「これだけあれば目的は達成できるよ」とかき集めた要素をまとめています。最適解ではありません。
使うもの
パソコン(私はWindows利用者です)
Googleアカウント(google colaboの使用を推奨するので)
楽天アカウント(アプリIDをとるのに必要)
楽天アプリID(APIをつかうのに必要)
Python(ローカル側用)
requestsのモジュールはサードパーティなので別途インストール
エディタ(ローカル用、メモ帖でもダメじゃないですけど、便利)
※当初組んだ時は上記だったのですが、その後改めて勉強してみよう、と思った直後にJupyterLabやAnacondaなるツールがあるそうな。
つまりそんなことも知らずに組みましたが、なくともできる、ということでも・・まぁ・・そちらのツールを調べてやりやすい環境を作る方がよいかもしれません。
環境構築と準備
選択肢として、
・Google colaboでつくる
・ローカルでつくる
のがあります。
私は併用をお勧めします。といいますのが、Googlecolaboは本当に素晴らしいのです。
インストールも一切不要でログインするだけでプログラムをうてますし、しかもセル毎に実行することができるのでミスがないかの確認が超簡単!
ただ・・外部ファイルを利用するのがなかなか面倒です。
ですので、環境構築で躓かないためにも
・Googlecoraboで骨組みを作ることで、プログラミングの感覚を知る
・外部ファイルその後でローカルでテスト
とすれば挫折しにくいのではないかなと思います。
google colaboratoryへのログイン
まずは入れるようにしておきましょう。
何かうまくいかなかったら、GANMA SOFT様のブログが分かりやすいです。
Pythonのインストール
インストールしておきましょう。Python3の方です。
ここはLet’sプログラミング様のやり方が良いと思います。今のバージョンは3.8.1です。
Customize installationでインストール先を変更しないと、隠しフォルダーに入ってしまいます。まぁだからダメということもないんですけどね。
Add Python pathへのチェックは忘れないようにしましょう。後で通すのは手間です。
インストールし終えたら、Windowsホーム画面左下の「ここに入力して検索」にcmdと打ち込んで、コマンドプロンプトを立ち上げて
pythonと打ってみましょう。Python 3.8.1 (tags/v3.8.1・・・・と表示されたらインストール成功です。
requestsのインストール
そのままコマンドプロンプトで pip install requests と入れてエンターキーを押して、しばらく放っておいてあげてください。ダウンロード、インストールしてくれます。
これを入れておかないと、APIでリクエストを取りに行ったりしてくれません。pythonでは便利なパッケージが色々とあるのですけれど、標準・サードパーティ・自作とありまして。
標準はそのまま使えるもの、サードパーティはインストールすれば使えるもの、らしいです。自作は作ったことないので知りません・・
エディタのインストール
たくさんありますが、どれでもいいんじゃないかな。私はテックアカデミー様やコードキャンプ様でも挙げていたatomを使っています。入力の補助機能が便利です。
楽天アプリIDの取得
特に苦労なく、さらっと登録できるかと思います。アプリの名前とURLは、私は本ブログ名でやりました。詰まった際には次の方々のブログ記事内容でいけそうです。
プログラミングしていく
基礎を求めておられるようでしたら、まずはprogateの無料部分がおススメです。
こちらでは「プログラマーになりたいんじゃなくて、道具が欲しいんだよ」という方へ向けてですので、必要な部分だけ記していきます。
APIの使い方について色々と調べたければ、私はキカガク 今西様の動画が分かりやすかったです。ぐるなびのAPIですけど。次項に進む前に一度見られた方がイメージ湧きやすいかもしれません。
保存場所を作る
デスクトップでもCドライブ下でもどこでも良いですが、一旦Cドライブ下に作っておきましょう。そしてデスクトップかエクスプローラ上でショートカットを作っておきましょう。
フォルダ名はpython_lessonで良いです。(なんでもいい)
入れ物用のファイルを作る
上記で作ったフォルダの中に
raku.py(Pythonのファイル。中にプログラムを書いていきます)
jan.txt(janコードや検索ワードを入れます)
data.csv(検索した結果が出力されます)
というファイルを作っておきましょう。()はいりません。拡張子までです。
プログラムを書く
上段でインストールも終わっているので、最初からローカルでも大丈夫ですけれど、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の仕様を見てリクエストの内容を決めます。
読み込みファイルを整える
先に作った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と楽天の価格差からのスクリーニングですから、 表計算までくれば何とでもなるのです。