collect, analyze, and visualize data
/ produced by Hiroyuki Shinoda
collect, analyze, and visualize data
Article
2014.11.3
amazonの購入履歴を取得する。

今回はamazonの購入履歴を取得する方法について見ていきます。
2014年11月現在、”amazon.com”については管理画面から、購入履歴のデータをダウンロードできるようですが、
“amazon.co.jp”はローデータでの購入履歴の取得はできません。(なぜなのでしょうか、。)

本稿では、Ruby[ref]実行時に、”Syntax error”となる場合は、プログラムの改行コードが”LF(LINUX)”となっているかチェックです。[/ref]を用いてWebスクレイピングする方法について見ていきます。

だいたい最近の言語ですと、Webスクレイピング用の外部ライブラリが用意されておりますが、
Rubyの場合は”Nokogiri”および”Mechanize”となります。[ref]ネーミングについては、Pythonの”BeautifulSoup”の方が、かっこいいですね、。[/ref]

Nokogiri、Mechanizeのインストール、詳細については“Nokogiri の基本(翻訳版)が詳しいです。
以下は、すでにNokogiri、Mechanizeがインストールされているruby環境で進めてまいります。
といっても、ターミナルで以下を入力すればインストールできるかと思います。

まずはプラグインを設定したあと、mechanizeでagentを立ち上げて、好きなUserAgentを設定します。

その後、amazonのログインページにアクセスし、ログインします。

無事ログイン出来ているかは、取得ページのタイトルが、
「注文履歴を見る」になっているか、確認するとよいかと思います。

さて、ここからが本題のamazonの注文履歴のスクレイピングとなりますが、
amazon注文履歴のcssは2014年時点では下記のようになっています。

amazon_css

なぜ、日時のh2要素のみ、class、id指定が無いのでしょうね、。
h2要素は、「配達を完了しました」「予約注文済み」などの購入ステータスにも用いられているため、
何らかの方法で除去する必要があります。

上記のcssのnameをたよりに、”action-box rounded”ごとに処理をしていけば抽出できます。
日時のh2箇所(ステータスコードの除去)の処理はかなり強引ですが、。

処理は以下の手順となります。
(1) 自動でcsv書き出ししたいので、csvを開いて、表頭を記入
(2) 集計年ごとにURLを開く
(3) Nokogiriにかます。
(4) “action-box rounded(注文履歴)”が空かチェック
(5) 空でなければ、順次csvに記入

これにて、csvでamazonの注文履歴を下記のように書き出すことが可能です。

amazon_excel

ちなみに上記では記述を省略していますが、実際に実行する際は、sleepなどを用いて、
連続アクセスでamazonに迷惑がかからにようにご注意くださいませ。。

なお、上記と同様の方法をPythonのBeautifulSoup、
あるいは、VBAを用いる方法などを用いることでも可能かと思います。
どの言語を用いるかはプログラマの好みによるところかと思います。

以上、今回はRubyを用いたamazon.co.jpからの購入履歴の取得方法についてみていきました。

人気記事: