2016-07-02 11 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') 

देख ऊपर यह ठीक काम करता है और मैं प्रिंट समारोह से आउटपुट प्राप्त जब मैं कोड चलाएँ: <amazon.api.AmazonAPI object at 0x7fb6e59f7b38>अमेज़न सरल उत्पाद API त्रुटि जब तक उत्पाद

तो सब कुछ मेरी पहुँच कुंजी के साथ ठीक काम कर रहा है, गुप्त कुंजी, और सहयोगी टैग।

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 

मैं इस https://github.com/yoavaviram/python-amazon-simple-product-api और कोड के लिए आधिकारिक GitHub से निर्देश का पालन किया है मैं उपयोग कर रहा हूँ आप देखेंगे:

हालांकि, अगर मैं संयुक्त राष्ट्र-टिप्पणी अंतिम पंक्ति #product = amazon.lookup(ItemId='B00EOE0WKQ') तो मैं इस त्रुटि ट्रैस बैक मिलता है मैंने जिथब पेज पर "उपयोग" उपशीर्षक से उपयोग किया है, इस प्रकार मुझे यकीन नहीं है कि क्या गलत हो रहा है।

जोड़ा जानकारी के लिए, मैं एक आभासी वातावरण का उपयोग कर रहा हूँ और दिखाने के लिए मैं अपने बाहर पिप फ्रीज की डाल दिया है सही संकुल यहां स्थापित है:

(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 

इसके अलावा, मैं के कई अलग अलग असिन संख्या की कोशिश की है वैध उत्पाद और मुझे एक ही त्रुटि संदेश मिलता है।

मैं Ubuntu 14.04 पर अजगर 3.4 का उपयोग कर रहा

+0

क्या आपके पास एकाधिक खाते हैं? क्या आपने स्क्रिप्ट में उपयोग किए गए खाते को अधिकृत किया है और कोई अन्य –

उत्तर

-1

आप API access के लिए अपने खाते को अधिकृत करने के लिए आवश्यकता हो सकती है। यह आपको इसके माध्यम से चलना चाहिए।

संपादित करें:


मैं एक ही संस्करणों के सभी स्थापित किया है और अपने ही कुंजी के साथ एक ही अजगर कोड का उपयोग कर रहा है और यह ठीक काम करता है। एकमात्र बार मुझे सामना करना पड़ा कि त्रुटि तब हुई जब मैंने क्षेत्र निर्दिष्ट नहीं किया (जिसे आप स्पष्ट रूप से कर रहे हैं)।

एक बात मैं कोशिश करता हूँ अपनी स्क्रिप्ट में निम्न कोड जोड़ने के लिए है:

आयात प्रवेश
logging.basicConfig (स्तर = logging.DEBUG)

प्रदर्शित करना चाहिए जो निम्नलिखित अनुरोध यूआरएल:

डीबग: bottlenose.api: अमेज़न यूआरएल: http://webservices.amazon.co.uk/onca/xml?AWSAccessKeyId= & AssociateTag = & Itemid = B00EOE0WKQ & ऑपरेशन = ItemLookup & ResponseGroup = बड़े & एस ervice = AWSECommerceService & टाइमस्टैम्प = & संस्करण = 2013-08-01 & हस्ताक्षर =

आप अपने ब्राउज़र में इस यात्रा कर सकते हैं और ऐसा करना चाहिए एक एक्सएमएल दस्तावेज वापस देखें। यदि यह विफल हो जाता है तो उम्मीद है कि आपको पाइथोनिब आपको क्या देता है उससे बेहतर त्रुटि देनी चाहिए।

उदाहरण के लिए, यदि मैं https://associates-amazon.s3.amazonaws.com/scratchpad/index.html पर जाता हूं (इसे मेरे लिए काम करने के लिए कभी नहीं मिला) लेकिन यह क्षेत्र के लिए मूल URL की एक सूची प्रदान करता है।

मैं .co.uk क्षेत्र पर मेरे सहयोगी खाता नहीं बनाया है, इस प्रकार मेरी अनुरोध केवल http://webservices.amazon.co.uk के लिए मान्य होगा, अगर मैं बजाय तो मैं देखेंगे http://webservices.amazon.com क्वेरी करने के लिए प्रयास करें:

अनुरोध हस्ताक्षर हम गणना आपके द्वारा प्रदान किए गए हस्ताक्षर से मेल नहीं खाता । अपनी एडब्ल्यूएस गुप्त पहुंच कुंजी और हस्ताक्षर विधि की जांच करें। विवरण के लिए सेवा प्रलेखन से परामर्श लें।

यदि आपके पास amazon.com पर एक सहयोगी खाता है, तो क्षेत्र निर्दिष्ट किए बिना इसे आज़माएं क्योंकि मुझे लगता है कि यह डिफ़ॉल्ट है। उपरोक्त के अलावा, जांचें कि आपके वीएम में इंटरनेट कनेक्टिविटी है और यदि कुछ और काम नहीं करता है तो दूसरी पहुंच कुंजी बनाने और इसका उपयोग करने का प्रयास करें।

+0

धन्यवाद - मैं पहले से ही उस प्रक्रिया के माध्यम से अपने assoc टैग, assoc access api एक dsecret कुंजी प्राप्त करने के लिए चला गया है। शायद मुझे कुछ याद आ रहा है, लेकिन मैंने पहले उन चरणों का पालन किया है। –

3

मुझे लगता है, समस्या क्षेत्र के साथ है। कृपया मान्य मान from here का चयन करें। स्पष्टीकरण यह हो सकता है कि एडब्ल्यूएस आपके क्रेडेंशियल को मान्य कर सकता है, लेकिन जब "असली" कॉल की बात आती है तो यह विफल हो जाती है, क्योंकि 'यूएस' मान्य क्षेत्र नहीं है ...

+0

मेरे मामले में यूके में यह काम मुझे अमेज़ॅन = अमेज़ॅनएपीआई (AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, क्षेत्र = "यूके" करना था) –

संबंधित मुद्दे