大宮盆栽デイズ - Omiya Bonsai Days -

冗談めかす埼玉のファインマン

(!=盆栽)Kindle本の値下げサイトを作るのに失敗

f:id:n_pilot:20190929143103g:plain
(盆栽とは関係のない記事です)Python のクローリングとスクレイピングKindle本の情報を掲載するサイトを作成しようとしましたが、失敗しました。

価格が結構変動する Kindle

ちょくちょく、Amazon の Wishlist に入れてある Kindle本の価格をチェックしています。タイミングが合えば、半額セールとかポイント還元とかでお得になっています。

何度もチェックする行為に辟易

思い出したときに、Wishlist をチェックする行為になんとなく辟易(へきえき)してきました。なんだか、退屈なルーチンになってしまっているなあと。価格が変動したときに、通知が来る仕組みを作れないものだろうか。

値下げ情報サイトが存在してる

いくつかのサイトで、Kindle本の値下げ情報をあげているところがあります。もしかしたら、じぶんでこういうサイトを作れたりしないだろうか。ついでに、値下げ情報をまとめるサイトを作ってアフィリエイトを得られるようにする仕組みを構築できないだろうか。

Pythonスクレイピングとは

コンピュータのプログラム言語に「Python(ぱいそん)」というのがあります。それを利用することで、ネットの情報を「自動」でゲットできる仕組みがあります。それをクローリング、といいます。その集めた情報を解析するのをスクレイピングっていいます。

スクレイピングにある問題点

ただ、クローリングによって、相手先のサーバに負担をかけてしまうことで損害を与えてしまうケースがあります。以前、ある図書館のデータベースをクローリングしたことで問題になった人もいるようです。加えて、スクレイピングした情報についても、(もし公開するのなら)今度は「著作権」という問題もあるようで。

本で得た情報:「API を使う」

API というのを使うと、相手先のサーバへの負担が少ないようです。それなので、Amazon のための API を利用した「python-amazon-simple-product-api」というプログラムを使うことにしました。このプログラムについては、下のリンクにある本(「Pythonクローリング&スクレイピング[増補改訂版] , 加藤耕太, 2019」)を読んで知りました。

pypi.org

Kindle本の価格は取得できず

ただ、このプログラムを使っても、Kindle本の価格情報だけ、None となりました(他のカテゴリの商品については価格情報を取得することはできるのですが)。API を使って本の商品 URL などは取得できます。それなので、URL をもとにクローリングする方法も考えたのですが、この方法は相手先に負担をかけるため、やらないほうが良いと判断しました。

周辺を整えていただけに残念

Kindle本の価格を取得する」という核になる部分がダメだったので、思っていたとおりにはいきませんでした。その核になる部分を先送りにして、周辺の環境(たとえば、Flask だったり、HTML, CSS とか Heroku )を準備していたのについては、結果的に台無しになってしまいました。
f:id:n_pilot:20190929151941p:plain

きっと解決策はあるはずだけど

上で書いてあるように、Kindle本の価格情報サイトがあるからには、なんらかの方法で価格情報を取得することが実現できるはずです。ですが、今回はこれで一旦中止します。コストがかかりすぎてしまいました。今回の経験で、Python の知識が増えたのは良かったです。もうひとつ、発見だったのは、今の時代は Udemy を使って簡単に、そして効果的に学習ができるということです。これは本当に楽しかった。