问题描述
我正在使用以下功能从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 (将#修改为@)