Amazon Python API从其他商人那里获得价格

问题描述

我正在使用以下功能从amazon.it市场获取商品价格(例如B07MDHHL82)。

代码运行得很好,但是当卖家不是亚马逊而是第三方商人时,我无法弄清楚如何获得该商品的价格。

"""
This sample code snippet is for ProductAdvertisingAPI 5.0's GetItems API

For more details,refer:
https://webservices.amazon.com/paapi5/documentation/get-items.html

"""

from paapi5_python_sdk.api.default_api import DefaultApi
from paapi5_python_sdk.models.condition import Condition
from paapi5_python_sdk.models.get_items_request import GetItemsRequest
from paapi5_python_sdk.models.get_items_resource import GetItemsResource
from paapi5_python_sdk.models.partner_type import PartnerType
from paapi5_python_sdk.rest import ApiException


def parse_response(item_response_list):
    """
    The function parses GetItemsResponse and creates a dict of ASIN to Item object
    :param item_response_list: List of Items in GetItemsResponse
    :return: Dict of ASIN to Item object
    """
    mapped_response = {}
    for item in item_response_list:
        mapped_response[item.asin] = item
    return mapped_response


def get_items():
    """ Following are your credentials """
    """ Please add your access key here """
    access_key = "<YOUR ACCESS KEY>"

    """ Please add your secret key here """
    secret_key = "<YOUR SECRET KEY>"

    """ Please add your partner tag (store/tracking id) here """
    partner_tag = "<YOUR PARTNER TAG>"

    """ PAAPI host and region to which you want to send request """
    """ For more details refer: https://webservices.amazon.com/paapi5/documentation/common-request-parameters.html#host-and-region"""
    host = "webservices.amazon.it"
    region = "eu-west-1"

    """ API declaration """
    default_api = DefaultApi(
        access_key=access_key,secret_key=secret_key,host=host,region=region
    )

    """ Request initialization"""

    """ Choose item id(s) """
    item_ids = ["B07MDHHL82"]

    """ Choose resources you want from GetItemsResource enum """
    """ For more details,refer: https://webservices.amazon.com/paapi5/documentation/get-items.html#resources-parameter """
    get_items_resource = [
        GetItemsResource.ITEMINFO_TITLE,GetItemsResource.OFFERS_LISTINGS_PRICE,GetItemsResource.IMAGES_PRIMARY_MEDIUM,]

    """ Forming request """

    try:
        get_items_request = GetItemsRequest(
            partner_tag=partner_tag,partner_type=PartnerType.ASSOCIATES,marketplace="www.amazon.it",condition=Condition.ANY,item_ids=item_ids,resources=get_items_resource,)
    except ValueError as exception:
        print("Error in forming GetItemsRequest: ",exception)
        return

    try:
        """ Sending request """
        response = default_api.get_items(get_items_request)

        print("API called Successfully")
        #print("Complete Response:",response)

        """ Parse response """
        if response.items_result is not None:
            print("Printing all item information in ItemsResult:")
            response_list = parse_response(response.items_result.items)
            for item_id in item_ids:
                print("Printing information about the item_id: ",item_id)
                if item_id in response_list:
                    item = response_list[item_id]
                    if item is not None:
                        if item.asin is not None:
                            print("ASIN: ",item.asin)
                        if item.detail_page_url is not None:
                            print("DetailPageURL: ",item.detail_page_url)
                        if (
                            item.item_info is not None
                            and item.item_info.title is not None
                            and item.item_info.title.display_value is not None
                        ):
                            print("Title: ",item.item_info.title.display_value)
                        if (
                            item.offers is not None
                            and item.offers.listings is not None
                            and item.offers.listings[0].price is not None
                            and item.offers.listings[0].price.display_amount is not None
                        ):
                            print(
                                "Buying Price: ",item.offers.listings[0].price.display_amount,)
                else:
                    print("Item not found,check errors")

        if response.errors is not None:
            print("\nPrinting Errors:\nPrinting First Error Object from list of Errors")
            print("Error code",response.errors[0].code)
            print("Error message",response.errors[0].message)

    except ApiException as exception:
        print("Error calling PA-API 5.0!")
        print("Status code:",exception.status)
        print("Errors :",exception.body)
        print("Request ID:",exception.headers["x-amzn-RequestId"])

    except TypeError as exception:
        print("TypeError :",exception)

    except ValueError as exception:
        print("ValueError :",exception)

    except Exception as exception:
        print("Exception :",exception)

我尝试过的

1-将OfferCount参数添加到GetItemsRequest函数

我使用了this文档,但是如果我尝试执行以下操作

get_items_request = GetItemsRequest(
    partner_tag=partner_tag,OfferCount=2,)

我得到错误__init__() got an unexpected keyword argument 'OfferCount'

2-将商家参数添加到GetItemsRequest函数 我也使用documentation向GetItemsRequest定义中添加一个Merchant参数,但似乎像以前一样是未知的。

get_items_request = GetItemsRequest(
    partner_tag=partner_tag,Merchant="All",)

在整个Amazon文档中,我真的找不到任何有用的信息! 谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)