2010-12-31 5 views
27

Amazonは最近APIを変更しました。このAPIを使用してプログラムでAmazonのWishListにアクセスする方法はないようです。誰も画面スクレイピング以外の方法を知っていますか?たぶん一部のサードパーティのサービス(私は公開データだけで作業しても構わない)ですか?Amazon Wishlistへのプログラムによるアクセス?

答えて

15

スクリーンスクレイピングのために、コンパクトなレイアウトスタイルが役に立つかもしれません:http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

更新

私は、Googleスプレッドシートの私自身のいくつかのハッキングを行なったし、作業2つの基本的な実装を得ることができました。 Google Appsのスクリプトを使用した

は、セルA1にあなたのウィッシュリストのIDを入力します。グーグルにコピーし、以下を貼り付け、スクリプト([ツール]> [スクリプト]> [スクリプトエディタ)アプリ、getWishlist機能を実行します。

function getWishlist(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var wishlistId = sheet.getRange('a1').getValue(); 
    var response = UrlFetchApp.fetch("http://www.amazon.co.uk/registry/wishlist/" + wishlistId + "?layout=compact").getContentText(); 
    var asinRegex = /name="item.([\d]+)\.(?:[A-Z0-9]+).([A-Z0-9]+).*/g 
    while (match = asinRegex.exec(response)) { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var rowIndex = Number(match[1])+2; 
    var asin = match[2]; 
    setRow(sheet, rowIndex, asin); 
    var offers = UrlFetchApp.fetch("http://www.amazon.co.uk/gp/offer-listing/" + asin).getContentText();  
    setRow(sheet, rowIndex, asin, 
      getFirstMatch(/class="producttitle">(.+)</g, offers), 
      getFirstMatch(/class="price">(.+)</g, offers)); 
    } 
    Browser.msgBox("Finished"); 
} 

function getFirstMatch(regex, text) { 
    var match = regex.exec(text); 
    return (match == null) ? "Unknown" : match[1]; 
} 

function setRow(sheet, index, a, b, c) { 
    sheet.getRange('a' + index).setValue(a); 
    sheet.getRange('b' + index).setValue(b); 
    sheet.getRange('c' + index).setValue(c); 
} 

NB、私はタイトルに一致する正規表現でいくつかちゃったごめんなさいを抱えています/価格。理由はわかりませんが、基本的な考え方を示しています。

使用してGoogleスプレッドシート機能

は、セルA1にあなたのウィッシュリストのIDを入力します。

A2に次の関数を入力します。それはあなたのウィッシュリストの各項目のid列とセルとその下のすべてを移入します:

=importXML("http://www.amazon.co.uk/registry/wishlist/"&A1&"?layout=compact", "//*[starts-with(@name, 'item.')]/@name") 

をid文字列からASINを抽出した、B2に次の関数を入力:

=right(A2, 10) 

タイプタイトルB2でのASINのリスティングのオファーを取得し、表示しますB3に次の関数、:フェッチします

=importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//h1") 

タイプB4に次の機能を、ごB2にASINために上場し、すべての価格を表示する:ジャスティンScarpetti呼ば

=concatenate(importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//span[@class='price']")) 
+0

リンクは有望に見えることを、感謝! – StasM

+0

はamazon.co.ukの代わりにamazon.comの代わりにこれを試しました。 xpathクエリエラーを取得しています。何か案は? –

+0

@ LarryG.Wapnitskyこのコードは3年前のamazonに基づいているため、HTMLがおそらく変更されています。表示されているエラーの詳細を共有したり、Googleのスプレッドシートを共有したりできますか? – robd

12

男があなたのウィッシュリストを削ると、JSON形式でデータを返し、本当にきちんとした「API」を作成しました。

これはAmazon Wish Listデータを取得するための小さなAPIです。数年前にAmazonがシャットダウンしたため、 公式APIはありません。その周りの唯一の方法 ...スクリーンスクレイピング。

アマゾンウィッシュリスターは、Amazonのウィッシュリストページと JSON、XML、またはPHP配列オブジェクトへの輸出をこすりする(サーバー側のCSS3セレクタはjQueryのに基づいてDOM APIを駆動)phpQueryを使用しています。

お客様のご希望のリストをご自身の ウェブサイトに表示したい場合は完璧です。

出典:Amazon Wish Lister

+20

ねえ!それは私です! :) – doitlikejustin

+0

ちょっとアンディ、私はモバイル側でこれを使用できますか?はいの場合は、私に方法を教えてください。 – Kumar

+1

こんにちは@Kumar申し訳ありませんが、モバイルバックエンドとの統合に関するアドバイスはありません。しかし、出力がJSONなら、あまり問題なくモバイルアプリ開発でこれを使用できるはずです。 –

関連する問題