2013-05-01 28 views
6

tl; dr: Tôi đang sử dụng API quảng cáo sản phẩm Amazon với Python. Làm cách nào để tôi có thể thực hiện tìm kiếm từ khóa cho một cuốn sách và nhận kết quả XML chứa TITLE, ISBN và PRICE cho mỗi mục nhập?Tìm kiếm sách bằng API quảng cáo sản phẩm Amazon - Python

phiên bản Verbose:

Tôi đang làm việc trong Python trên một trang web cho phép người dùng để tìm kiếm các sách giáo khoa từ các trang web khác nhau như eBay và Amazon. Về cơ bản, tôi cần lấy thông tin đơn giản như tiêu đề, ISBN và giá cho mỗi mục từ một tập hợp các kết quả tìm kiếm từ một trong các trang web đó. Sau đó, tôi có thể lưu trữ và định dạng thông tin đó khi cần trong ứng dụng của tôi (ví dụ: hiển thị HTML).

Trong trường hợp của eBay, việc nhận thông tin tôi cần không quá khó. Tôi đã sử dụng urllib2 để thực hiện yêu cầu dựa trên mẫu mà tôi đã tìm thấy. Tất cả những gì tôi cần là một khóa bảo mật đặc biệt để thêm vào URL:

def ebaySearch(keywords): #keywords is a list of strings, e.g. ['moby', 'dick'] 

    #findItemsAdvanced allows category filter -- 267 is books 
    #Of course, I replaced my security appname in the example below 

    url = "http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsAdvanced&SERVICE-NAME=FindingService&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=[MY-APPNAME]&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&categoryId=267&keywords=" 

    #Complete the url... 
    numKeywords = len(keywords) 
    for k in range(0, numKeywords-1): 
    url += keywords[k] 
    url += "%20" 

    #There should not be %20 after last keyword 
    url += keywords[numKeywords-1] 

    request = urllib2.Request(url) 
    response = urllib2.urlopen(request) #file like thing (due to library conversion) 

    xml_response = response.read() 
    ... 

... Sau đó tôi phân tích cú pháp này bằng minidom.

Trong trường hợp của Amazon, dường như không dễ dàng như vậy. Tôi nghĩ rằng tôi sẽ bắt đầu bằng cách chỉ cần tìm một wrapper dễ dàng. Nhưng trang web nhà phát triển của họ dường như không cung cấp trình bao bọc python cho những gì tôi quan tâm (API quảng cáo sản phẩm). Một cái mà tôi đã thử, python-amazon-product-api 0.2.5 từ https://pypi.python.org/pypi/python-amazon-product-api/, đã cho tôi một số vấn đề cài đặt có thể không đáng để bạn xem xét (nhưng có lẽ tôi chỉ bực bội ..). Tôi cũng nhìn xung quanh và tìm thấy pyaws và pyecs, nhưng chúng dường như sử dụng cơ chế xác thực không được chấp nhận.

Tôi sau đó đã tìm ra tôi sẽ cố gắng xây dựng các URL từ đầu như tôi đã làm cho eBay. Nhưng Amazon đòi hỏi một dấu thời gian trong các URL, mà tôi cho rằng tôi có thể lập trình xây dựng (có lẽ một cái gì đó giống như những người này, những người đi toàn bộ 9 yards với chữ ký: https://forums.aws.amazon.com/thread.jspa?threadID=10048).

Ngay cả khi điều đó có hiệu quả (mà tôi nghi ngờ sẽ xảy ra, với mức độ thất vọng mà logistics đã đưa ra), dòng dưới cùng là tôi muốn tên, giá và ISBN cho sách mà tôi tìm kiếm. Tôi đã có thể tạo URL mẫu với hướng dẫn trên trang web API và sau đó xem kết quả XML, thực sự chứa tiêu đề và ISBN. Nhưng không có giá! Gah! Sau một số tìm kiếm tuyệt vọng của Google, một sửa đổi nhỏ đối với URL (thêm & ResponseGroup = Phiếu mua hàng và & MerchantID = Tất cả) đã thực hiện thủ thuật, nhưng sau đó không có tiêu đề. (Tôi đoán thêm một câu hỏi khác mà tôi có, thì tôi có thể tìm chỉ số của các tham số ResponseGroup có thể ở đâu?)

Nhìn chung, tôi thực sự không có phương pháp vững chắc cho việc này. Phương pháp tiếp cận xây dựng-a-url có phải là một cách khá hay không, hay nó sẽ trở nên rắc rối hơn nó đáng giá? Có lẽ tl; dr ở đầu là một đại diện tốt hơn của câu hỏi tổng thể.

+1

Tôi chưa từng nghe về API quảng cáo sản phẩm trước đây - điều đó thật thú vị!Tôi không thể trợ giúp với toàn bộ câu hỏi của bạn, nhưng đây là danh sách chính thức của Nhóm phản hồi http://docs.aws.amazon.com/AWSECommerceService/latest/DG/CHAP_ResponseGroupsList.html – Qanthelas

Trả lời

6

Một cách khác có thể là amazon-simple-product-api:

from amazon.api import AmazonAPI 
amazon = AmazonAPI(ACCESS_KEY, SECRET, ASSOC) 
results = amazon.search(Keywords = "book name", SearchIndex = "Books") 
for item in results: 
    print item.title, item.isbn, item.price_and_currency 

Để cài đặt, chỉ cần bản sao từ github và chạy

sudo python setup.py install 

Hope this helps!

0

Nếu bạn gặp sự cố cài đặt với python-amazon-product-api, hãy gửi chi tiết đến danh sách gửi thư và bạn sẽ được trợ giúp.

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