2016-07-02 27 views
8
from amazon.api import AmazonAPI 

AMAZON_ACCESS_KEY = "A******************A" 
AMAZON_SECRET_KEY = "7***********************E" 
AMAZON_ASSOC_TAG = "j*****-20" 

amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, region='US') 
print(amazon) 
#product = amazon.lookup(ItemId='B002RL8FBQ') 

Khi tôi chạy mã trên nó hoạt động tốt và tôi nhận được kết quả này từ chức năng in: <amazon.api.AmazonAPI object at 0x7fb6e59f7b38>Amazon Simple sản phẩm API lỗi khi nhìn lên sản phẩm

Vì vậy, tất cả mọi thứ đang làm việc tốt với phím truy cập của tôi, khóa bí mật và thẻ liên kết.

Tuy nhiên, nếu tôi bỏ bình luận dòng cuối cùng #product = amazon.lookup(ItemId='B00EOE0WKQ') sau đó tôi nhận được traceback lỗi này:

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    product = amazon.lookup(ItemId='B00EOE0WKQ') 
    File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/amazon/api.py", line 173, in lookup 
    response = self.api.ItemLookup(ResponseGroup=ResponseGroup, **kwargs) 
    File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/bottlenose/api.py", line 251, in __call__ 
    {'api_url': api_url, 'cache_url': cache_url}) 
    File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/bottlenose/api.py", line 212, in _call_api 
    return urllib2.urlopen(api_request, timeout=self.Timeout) 
    File "/usr/lib/python3.4/urllib/request.py", line 161, in urlopen 
    return opener.open(url, data, timeout) 
    File "/usr/lib/python3.4/urllib/request.py", line 469, in open 
    response = meth(req, response) 
    File "/usr/lib/python3.4/urllib/request.py", line 579, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib/python3.4/urllib/request.py", line 507, in error 
    return self._call_chain(*args) 
    File "/usr/lib/python3.4/urllib/request.py", line 441, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python3.4/urllib/request.py", line 587, in http_error_default 
    raise HTTPError(req.full_url, code, msg, hdrs, fp) 
urllib.error.HTTPError: HTTP Error 400: Bad Request 

Tôi đã theo các hướng dẫn từ github chính thức cho https://github.com/yoavaviram/python-amazon-simple-product-api này và mã Tôi đang sử dụng bạn sẽ thấy Tôi đã sử dụng từ phân nhóm "Cách sử dụng" trên trang github, do đó tôi không chắc chắn những gì đang xảy ra.

Đối với thông tin thêm, tôi đang sử dụng một môi trường ảo và để chứng minh rằng tôi có các gói cài đặt đúng ở đây là ra tôi đặt của pip đóng băng:

(myvenv) [email protected]_comp:~/Python_projects/amazon_wp$ pip3 freeze 
bottlenose==0.6.3 
lxml==3.6.0 
python-amazon-simple-product-api==2.1.0 
python-dateutil==2.5.3 
six==1.10.0 

Ngoài ra, tôi đã cố gắng số asin khác nhau của sản phẩm hợp lệ và tôi nhận được thông báo lỗi tương tự.

Tôi đang sử dụng python 3.4 trên ubuntu 14.04

+0

bạn có nhiều tài khoản không? bạn đã cho phép tài khoản được sử dụng trong tập lệnh chứ không phải một tài khoản khác –

Trả lời

-1

Bạn có thể cần phải ủy quyền cho tài khoản của bạn cho API access. Điều này step-by-step sẽ hướng dẫn bạn qua nó.

Edit:


Tôi đã cài đặt tất cả các phiên bản tương tự và đang sử dụng mã python cùng với các phím riêng của tôi và nó hoạt động tốt. Thời gian duy nhất tôi gặp phải lỗi đó là khi tôi không chỉ định khu vực (bạn đang làm rõ).

Một điều tôi muốn thử là thêm đoạn mã sau vào kịch bản của bạn:

nhập khẩu đăng nhập
logging.basicConfig (level = logging.DEBUG)

đó sẽ hiển thị url yêu cầu sau:

DEBUG: bottlenose.api: Amazon URL: http://webservices.amazon.co.uk/onca/xml?AWSAccessKeyId= & AssociateTag = & ItemID = B00EOE0WKQ & Operation = ItemLookup & ResponseGroup = Lớn & S ervice = AWSECommerceService & Timestamp = & Version = 2013/08/01 & Signature =

Bạn có thể truy cập này trong trình duyệt của bạn và nên xem một tài liệu XML được trả về. Nếu nó không thành công nó hy vọng sẽ cung cấp cho bạn một lỗi tốt hơn so với những gì pythonlib cung cấp cho bạn.

Ví dụ: nếu tôi truy cập https://associates-amazon.s3.amazonaws.com/scratchpad/index.html (không bao giờ làm việc này cho tôi) nhưng nó cung cấp danh sách các URL cơ sở cho khu vực.

tôi tạo tài khoản sư của tôi vào khu vực .co.uk, do đó yêu cầu của tôi sẽ chỉ có giá trị trong http://webservices.amazon.co.uk, nếu tôi thay vì cố gắng truy vấn http://webservices.amazon.com sau đó tôi sẽ thấy:

Chữ ký yêu cầu chúng tôi tính toán không khớp với chữ ký mà bạn cung cấp . Kiểm tra Khóa truy cập bí mật AWS và phương thức ký tên của bạn. Tham khảo tài liệu dịch vụ để biết chi tiết.

Nếu bạn đã có tài khoản liên kết trên amazon.com, hãy dùng thử mà không chỉ định khu vực như tôi cho là mặc định. Ngoài những điều trên, hãy kiểm tra xem máy ảo của bạn có kết nối internet không và không có công trình nào khác thử tạo một khóa truy cập khác và sử dụng nó.

+0

Cảm ơn - Tôi đã trải qua quá trình đó để nhận thẻ assoc của tôi, truy cập assoc api một khóa dsecret. Có lẽ tôi đang thiếu một cái gì đó, nhưng trước đây tôi đã làm theo các bước đó. –

3

Tôi nghĩ, vấn đề là với khu vực. Vui lòng chọn giá trị hợp lệ from here. Giải thích có thể là AWS có thể xác thực thông tin đăng nhập của bạn, nhưng khi nói đến "thực" gọi là không thành công, vì 'Hoa Kỳ' không phải là vùng hợp lệ ...

+0

trong trường hợp của tôi công việc này như tôi ở Anh tôi phải làm amazon = AmazonAPI (AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, vùng = "Vương quốc Anh") –

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