ここ最近、amazon.co.jp の検索結果の URL がコロコロ変わってます

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] ここ3週間くらい、アマゾンの検索結果(からたどりつく商品紹介ページ)の URL の形式が頻繁に変わっています。とりあえず、今まで登場した全パターンに対応できるコードを書いてみました。
[キーワード] ブックマークレット,JavaScript

« 「なか卯」の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 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


プログラミング」カテゴリ内の最近の記事

品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/6737/11743404

この記事へのトラックバック一覧です: ここ最近、amazon.co.jp の検索結果の URL がコロコロ変わってます:

» ソーシャルブックマーク管理ツール bookey 0.15版 from 観測気球
bookey の 0.15版をリリースします。この版で、ようやく bookey のサポートしているソーシャルブックマーク 10種類全部について、登録、取得、同期、削除が行なえるようになりました。 続きを読む

受信: 2006.09.06 午前 09:21

» アマゾンの URL から ASIN を取得する関数 getASIN() from 観測気球
現時点でのアマゾンの商品ページの URL のバリエーション全部(といいつつ、まだ抜けがあるかもしれません)に対応する ASIN 取得処理を C で書いてみました。実際に、bookey で使用しています。... 続きを読む

受信: 2006.09.06 午前 09:35

» bk1で検索するbookmarklet from facet-divers
amazon.co.jpのURLがコロコロ変わったりしているようで、以前作った拙作bookmarklet「Amazonで見ている本をbk1で検索するbookma 続きを読む

受信: 2006.09.11 午前 07:52

コメント


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)

コメントを書く




※イタズラ防止のため、メールアドレスを入力しないと投稿できません。

次からのコメント入力の手間を省くために、名前やメールアドレスをcookieに記憶しますか?


URL を入力すると、その URL にリンクがはられます。
なお、メールアドレスは公開されません。ご安心ください。


ワード

ニッセン

fujisan.co.jp

楽天市場