2017年07月11日

PythonによるAmazon注文履歴取得の拡張

以前に書いたのですが、家計管理上、毎月の自分が使った分は分類でまとめたEXCELを作成して妻に送っています。そのデータには自分のクレジットカードの内容も含まれています。

分類作成時に困ること

クレジットの明細を見れば大抵のものは分類ができるのですが、困ったことにAmazonは本・家電など色々なものが含まれるためクレジット明細だけでは分類ができず、サインインしたりメールを掘り出したりして何を買ったかを確認しないといけません。

対応策

PythonでAmazon注文履歴取得を取得するようにしました。といっても「Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド」を読みつつベースのコードを拡張しただけですが。

改変箇所

元々のコードだと、購入日と合計金額しか出力していません。そのため購入物も分かるようにしました。修正したのはprint_order_histryのみです。

def print_order_history():
"""
現在のページのすべての注文履歴を表示する。
"""
# ページ内のすべての注文履歴について反復する。ブラウザーの開発者ツールでclass属性の値を確認できる。
# 商品名を取得するためにorder-infoからorderに変更する
for line_item in browser.select('.order'):
order = {} # 注文の情報を格納するためのdict。
# 注文の情報のすべての列について反復する。
for column in line_item.select('.a-column'):
label_element = column.select_one('.label')
value_element = column.select_one('.value')
# ラベルと値がない列は無視する。
if label_element and value_element:
label = label_element.get_text().strip()
value = value_element.get_text().strip()
order[label] = value
print(order['注文日'], order['合計']) # 注文の情報を表示する。
# 商品名はhrefを目印にして取得できる。ただし画像からのリンクと区別するためにa-row直後のhrefを用いる
for title_element in line_item.select('.a-row > a[href^="/gp/product"]'):
if(title_element):
print(" " + title_element.get_text().strip())
print("")

出力結果

下記のような出力結果となり、コマンド一発で何を買ったのかが分かるようになりました。昨日頼んだおむつが一番最新の注文として出力されています。
2017年7月10日 ¥ 3,230
  グーン パンツ BIG (12~20kg) 156枚(52枚×3) 女の子 やわらかパンツ 【ケース販売】
 
2017年6月14日 ¥ 367
  uxcell HPノートパソコン用 修復部品 プラスチック トラックポイント ブルーキャップ  2個入り 高さ4.0mm
<<<後略>>>
 

スポンサーリンク
posted by くまなべ at 20:31 | Comment(0) | TrackBack(0) | Python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/180314739
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック