« 「なか卯」のTシャツ | トップページ | ecto for Windows 2.0 が 64bit版 Windows に対応した模様 »
2006.09.03
ここ最近、amazon.co.jp の検索結果の URL がコロコロ変わってます
2006年8月24日ごろから、amazon.co.jp の検索窓で検索した結果の URL の形式がころころ変わっています。特に、この4日くらい、変わったと思ったらすぐに元に戻ったり、元に戻ったと思ったら新たなパターンに変わったりと、変動が激しいです。
Amazonのトップページから検索して結果から商品個別ページに移動すると、URLにそのときの検索引数が入るようになりました。おかげでbookmarklet経由amazletツールでアフィリエイトリンク作ろうとすると失敗することが。G-Toolsのbookmarkletではうまくいくんですけどね。
Amazonの仕様が変わったおかげでちょっと不都合
そんな訳で、アマゾンの商品紹介用の URL とかを生成するブックマークレットや各種スクリプトがうまく動かなくなっています。とりあえず、検索結果の URL には以下のようなパターンがあることを確認しています。
- (1) http://www.amazon.co.jp/商品名(のUTF-8表現)をURLエンコードしたもの/dp/ASINコード/
- (2) http://www.amazon.co.jp/商品名(のUTF-8表現)をURLエンコードしたもの/gp/product/ASINコード/
- (3) http://www.amazon.co.jp/検索に指定したキーワード(のUTF-8表現)をURLエンコードしたもの/dp/ASINコード/
- (4) http://www.amazon.co.jp/検索に指定したキーワード(のUTF-8表現)をURLエンコードしたもの/gp/product/ASINコード/
- (5) http://www.amazon.co.jp/gp/product/ASINコード/
上記のうち、いちばん最後のものはスポーツストア登場時に(スポーツストアのみに)導入され、今では他のストアへも波及しているため、ほとんどのスクリプトが対応を完了していると思いますが、上記4つは対応できていないと思います。「/gp/product/ASINコード/」なパターン2つ[(2)と(4)]は、(5) の対応がそのまま効いて改めて修正する必要のないスクリプトもあるみたいですが、(1) と (3) は、さすがに未対応だと思います。
とりあえず、上記の全パターンに対応できる、ASIN取得処理は、以下のような感じになります。
ai = page_url.indexOf('ASIN'); asin = page_url.substring(ai+5,ai+15); if ( ai == -1 ) { ai = page_url.indexOf('gp/product/'); if ( ai >= 0 ) asin = page_url.substring(ai+11,ai+21); else { ai = page_url.indexOf('/tg/detail/-/'); if ( ai >= 0 ) asin = page_url.substring(ai+13,ai+23); else { ai = page_url.indexOf('/dp/'); if ( ai >= 0 ) asin = page_url.substring(ai+4,ai+14); } } }
なお、上記コード(JavaScript)は、page_url に検索結果からたどった商品紹介ページの URL が格納されているものとします。
以上、参考になれば幸いです。
関連記事
追記
「アマゾンの URL から ASIN を取得する関数 getASIN()」という記事(エントリ)を書きました。(2006年9月6日)
投稿者: tsupo 2006.09.03 午後 05:08
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: ここ最近、amazon.co.jp の検索結果の URL がコロコロ変わってます:
» ソーシャルブックマーク管理ツール bookey 0.15版 from 観測気球
bookey の 0.15版をリリースします。この版で、ようやく bookey のサポートしているソーシャルブックマーク 10種類全部について、登録、取得、同期、削除が行なえるようになりました。 続きを読む
» アマゾンの URL から ASIN を取得する関数 getASIN() from 観測気球
現時点でのアマゾンの商品ページの URL のバリエーション全部(といいつつ、まだ抜けがあるかもしれません)に対応する ASIN 取得処理を C で書いてみました。実際に、bookey で使用しています。... 続きを読む
» bk1で検索するbookmarklet from facet-divers
amazon.co.jpのURLがコロコロ変わったりしているようで、以前作った拙作bookmarklet「Amazonで見ている本をbk1で検索するbookma 続きを読む
コメント
var strAsin = location.href.replace( /^.*(ASIN|product|dp)\/([^\/]+)\/.*$/, "$2" );
こりじゃだめでつか?
投稿者: Bar (2006.09.03 午後 10:38)
検索結果からたどれるページは、それでいけますね。
あと、商品紹介ページから飛んだ先のページ(カスタマーレビュー、エディターレビュー、商品詳細ページなど)や「おまかせリンク」や「インスタントストア」から飛んだ先のページにも対応できれば、完璧かな。
あとでコードを書いてみます。
投稿者: tsupo (2006.09.03 午後 11:45)
>「おまかせリンク」や「インスタントストア」から飛んだ先のページにも対応できれば
http://astore.amazon.co.jp/blogsofdankog-22/detail/4844322893/503-8663025-6407917
うわ、こんなのもあったんだ^^;
(Dan氏のストアからなのは他意ナシ)
やっぱりマジメにチェックしてる方にはかないませんね。
var strAsin = location.href.replace( /^.*(ASIN|product|dp|detail)\/([^\/]+)\/.*$/, "$2" );
としてみたけど、「おすすめリンク」は
http://www.amazon.co.jp/exec/obidos/tg/sim-explorer/explore-items/-/B0006Q3TBU
ふむ。どうしよう。explore-items\/- って入れておけばいいかな。
どっちにしても上の正規表現はASINのあとが
.../ASIN/.*
という感じになってなきゃいけない手抜きですな。直さなきゃ。
投稿者: Bar (2006.09.04 午前 01:31)
ちなみに、/tg/ が含まれる場合に関しては、
(1) /tg/任意の文字列/-/ASIN
(2) /tg/任意の文字列/任意の文字列/-/ASIN
の2パターンあります。
投稿者: tsupo (2006.09.04 午後 07:38)
http://www.amazon.co.jp/exec/obidos/tg/new-for-you/top-sellers/-/toys/all/
から飛んだ先の商品ページは /dp/list/ASIN という形式になってますね。
/dp/任意の文字列/ASIN というのも考慮しないといけないようです。
まだ未知のパターンがありそう。
投稿者: tsupo (2006.09.07 午後 01:39)