2010-12-31 34 views
27

Amazon gần đây đã thay đổi API của họ và dường như không có cách nào để truy cập WishList của tôi trên Amazon bằng cách sử dụng các API này theo chương trình. Có ai biết cách nào để làm điều đó ngoài việc cạo màn hình? Có lẽ một số dịch vụ của bên thứ ba (tôi không nhớ chỉ làm việc với dữ liệu công khai)?Truy cập có lập trình vào Amazon Wishlist?

Trả lời

15

Đối cào màn hình, phong cách bố trí nhỏ gọn có thể hữu ích: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

Cập nhật

tôi đã làm một số hack của riêng tôi trong bảng tính google và được quản lý để có được 2 triển khai cơ bản làm việc.

dùng script Google Apps:

Loại ID danh sách mong ước của bạn vào ô A1. Sao chép và dán đoạn mã sau vào một google apps script (Tools> Scripts> Scripts Editor), và chạy các chức năng 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, Tôi đang gặp một số probs với regex phù hợp với các tiêu đề/giá bán. Không chắc chắn tại sao, nhưng cho thấy ý tưởng cơ bản.

Sử dụng chức năng Google Spreadsheet

Gõ ID danh sách mong ước của bạn vào ô A1.

Nhập hàm sau vào A2. Nó sẽ cư trú trong tế bào và tất cả đều dưới nó với chuỗi id cho mỗi mục trong danh sách mong ước của bạn:

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

Loại chức năng sau đây vào B2, nó sẽ phân tách các asin từ chuỗi id:

=right(A2, 10) 

Loại chức năng sau đây vào B3, mà sẽ lấy lời đề nghị niêm yết cho asin trong B2 và hiển thị tiêu đề:

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

Loại chức năng sau vào B4, mà sẽ lấy đề nghị niêm yết cho asin trong B2 và hiển thị tất cả các giá:

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

liên kết trông đầy hứa hẹn, cảm ơn! – StasM

+0

chỉ cần thử điều này, thay thế amazon.com cho amazon.co.uk. nhận lỗi truy vấn xpath. bất kỳ ý tưởng? –

+0

@ LarryG.Wapnitsky Mã này dựa trên amazon như cách đây 3 năm, do đó HTML có thể đã thay đổi. Bạn có thể chia sẻ thêm chi tiết về lỗi mà bạn đang xem hoặc chia sẻ bảng tính Google của bạn và tôi sẽ xem xét. – robd

12

Một anh chàng gọi Justin SCARPETTI đã tạo ra một "api" thực sự gọn gàng mà cạo danh sách mong ước của bạn và trả về dữ liệu ở định dạng JSON.

Đây là một API nhỏ để truy xuất dữ liệu Danh sách mong ước của Amazon. Không có API chính thức, vì Amazon đã đóng cửa một vài năm trước đây. Cách duy nhất xung quanh đó ... cạo màn hình.

Amazon Wish Lister sử dụng phpQuery (bộ chọn CSS3 phía máy chủ điều khiển DOM API dựa trên jQuery) để xóa trang Danh sách mong ước của Amazon và xuất sang JSON, XML hoặc đối tượng mảng PHP.

Hoàn hảo nếu bạn muốn lưu trữ hiển thị danh sách mong muốn của mình trên trang web của riêng bạn.

Nguồn: Amazon Wish Lister

+20

Xin chào! Chính là tôi! :) – doitlikejustin

+0

Hey Andy, Tôi có thể sử dụng điều này ở cuối thiết bị di động không? nếu có thì hãy cho tôi biết đường đi. – Kumar

+1

hi @Kumar xin lỗi nhưng tôi không thể cung cấp bất kỳ lời khuyên nào về việc tích hợp điều này với phần phụ trợ trên thiết bị di động. Nhưng với đầu ra là JSON, bạn sẽ có thể sử dụng nó trong phát triển ứng dụng di động mà không gặp quá nhiều rắc rối. –

Các vấn đề liên quan