一応「Amazon Product Advertising API」の利用に失敗した時はAmazonのデフォルトの商品リンクが表示されるようにしていたのですけど、表示のインパクトの差は歴然ですし、その上Amazonのデフォルトのリンクは広告ブロックの対象になります。広告ブロックされるのは仕方がないことですが、記事の一部分として商品画像を掲載するという意義もあったので、それが表示されない真っ白な状態はちょっとまずい。なんとかしないと。
※ 追記:商品ページのスクレイピングが失敗しているようで、現在上手く後いていません。詳細は文末に
APIを使わずに商品情報を整えることにしました
必要な技術は次の2つです。- ASINから商品画像URLを作成する
- 商品ページをスクレイピングしてタイトルなどを取得する
商品画像URLについては、こちらのページを参考にしました。
Amazon の商品画像を取得する
将来的に仕様がかわって画像が取得出来なくなる可能性はありますが、今のところは利用出来ています(上記記事が書かれたのは2013年ですから8年も変わっていないようです)。これで商品画像については解決しました。
タイトルなどはページをスクレイピングして取得するようにしています。スクレイピングについてはこちらの記事などで書いている「Goutte」を使用しています。
LaravelでスクレイピングしてAmazonのおすすめ度を取得【#np2020】 – NOBODY:PLACE
商品の種類によってページの構成が変わるため要素を正しく取得出来ない場合もありますが、おおむね、以下の要素を取得出来ています。
- タイトル
- 著者
- 価格
スクレイピングを使用する場合、対象サイトに無用な負荷を掛ける心配がありますが、商品表示はAWSでキャッシュされるようになっているので、表示回数に比べてスクレイピングの実施回数は非常に少なくなります。なので多分大丈夫(なはず)。
しばらくはこのままで
ブログ記事からAmazonの商品が売れて「Amazon Product Advertising API」が再び使用出来るようになるならそれに越したことは無いのですけど、そもそも大した収入にはなっていませんし、商品画像が表示出来ていれば目的はほとんど果たしたようなものなので、売上の多寡によらず当面はこのままで行こうかなと思っています。ちなみにさっき上げた記事を見返してみて思い出しましたけど、「Amazonのおすすめ度」取得出来なくなってますね。これもなんらかの方法で取得出来るように工夫出来れば。ちょっとなにがしか試してみます。