Amazonをスクレイピングして、在庫情報取得するgem作った

カテゴリー :Ruby

タイトル通り

Amazonをスクレイピングして、在庫情報取得するgem作りました。

結論から行くと、イマイチなので、このプロジェクトは発展させる気あまりありません。

どうして作った

Amazon.comでZenWatch2を注文したいと考えています。

しかし、ずっと在庫切れで、本来の値段より高いストアしか在庫がありません。

そこで、本来の価格で買えるAmazon.comの直売の在庫が復活したら注文しようと考えています。

でも毎日、在庫確認するのはめんどくさいので、そこを自動化しようと考えました。

何使ったのか

スクレイピングにRubyのgem「Nokogiri」がなかなかいいよということを聞いたので今回はRubyを使用しました。

また、以前からRubyのgemとしてアプリケーションを一回作ってみようと思っていたので、bundleを使用し、Rubyのgemの雛形に準拠して作りました。

どんなの作ったのか

him0/AmazonMiru

https://github.com/him0/AmazonMiru

便利だったもの

OpenUriRedirections

https://github.com/open-uri-redirections/open_uri_redirections

Amazonのリンクはリダイレクトしているようで、普通にopen-uriだ利用するだけではソースを取得できませんでした。

そこでこのgemを利用しました。

Nokogiri

https://github.com/sparklemotion/nokogiri

HTML, XML, SAXのパースができるgemデス。

XPathを使って要素を指定、抽出します。

Thor

https://github.com/erikhuda/thor

Rubyのコマンドラインツールを作れるgemです。

これは、何作るにも応用が効きそうです。

未解決の問題

何故か503が多発する

10回実行して1回ぐらいしかスクレイピングが成功しない

どうデバッグして良いものか、力不足で分かりません。どうしよう

ストアの指定ができない

商品の特定にはASINIDを利用しています.

しかし、ストア特定を特定する属性がいまいち分かっていません。

つまり、現在の仕様では、ストアに関係なく在庫の情報を取得しています。

Amazonの商品情報API使ったほうがいいのでは?

完成してから思い出してしまいました。

どう考えてもこっちのほうが妥当です。

これからどうするか

考えてみれば、在庫無くても注文できるので、それでいいかなという感じです。

今回は、rubyのgem作る経験できたので、今後に行かせたらなと考えています。