25

我需要能够使用亚马逊 API 获取产品的所有报价列表。这是我发送的请求:

http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&SubscriptionId=&AssociateTag=&Version=2011-08-01&ItemId=B007IJQDQQ&IdType=ASIN&ResponseGroup=Offers&Condition=All&MerchantId=All

这将返回以下优惠:

<Offers>
<TotalOffers>1</TotalOffers>
<TotalOfferPages>1</TotalOfferPages>
<MoreOffersUrl>
http://www.amazon.com/gp/offer-listing/B007IJQDQQ%3FSubscriptionId%3DAKIAJTZ6VROOTPJAPPWQ%26tag%3Damazoautom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007IJQDQQ
</MoreOffersUrl>
<Offer>
<OfferAttributes>
<Condition>New</Condition>
</OfferAttributes>
<OfferListing>
<OfferListingId>
TR5sygI0VR7cwy3Hg0DBHwgCWFnkqXLyCR70jjMhy1h8gWlEisKYt5cqDbS2Fu1SEqDtfBILdxYDziJdFzfsqMpPJkBqcYV3DFovHx1nXWRy9wHS6CFZXknBvsCo1bxYS%2BsxAeYrZHrS6g6aakEJQA%3D%3D
</OfferListingId>
<Price>
<Amount>375</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$3.75</FormattedPrice>
</Price>
<AmountSaved>
<PercentageSaved>56</PercentageSaved>
<Availability>Usually ships in 1-2 business days</Availability>
<AvailabilityAttributes>
<IsEligibleForSuperSaverShipping>0</IsEligibleForSuperSaverShipping>
</OfferListing>
</Offer>
</Offers>

如您所见,即使它说有 3 个新报价,它也只返回 1 个报价。有谁知道获得所有报价而不仅仅是最低报价的方法?Merchant ID='ALL' 不会这样做,其他任何响应组(如 offerFull、offerSummary 或 offer)也不会这样做。

4

2 回答 2

13

在做了一些研究之后,这在 API 中是不可能的,但是您可以解析标准页面的 HTML 以获取详细信息:

1)使用http://simplehtmldom.sourceforge.net/解析HTML(如果你不使用php,你需要找到类似的东西)

2) CURL (确保你设置了你的标题,否则亚马逊会出错) http://www.amazon.com/gp/offer-listing/B007IJQDQQ/?condition=newhttp://www.amazon.com/gp /offer-listing/B007IJQDQQ/?condition=used

3)要处理页面计数总数量(找到#new span.numberreturned)并除以15以计算出页面数。

4)您需要解析每个页面,URL 如下所示:

例如第 2 页 http://www.amazon.com/gp/offer-listing/B005IMB5SG/?condition=used&startIndex=15

例如第 3 页 http://www.amazon.com/gp/offer-listing/B005IMB5SG/?condition=used&startIndex=30

希望这些信息足以让您入门,抱歉,我无法访问我不久前编写的工作脚本。

于 2013-04-16T15:48:02.357 回答
0

Product API 便签本返回一个“All Offers”链接,您可以通过 HTTP 手动获取并解析该链接以提供包含所需信息的 DOM 节点列表。

在此处输入图像描述

这就像http://www.amazon.com/gp/offer-listing/B007IJQDQQ/?condition=used几年前提到的链接@dciso,但包含的 API 信息有助于更接近亚马逊规则。

<ItemLookupResponse>
    <Items>
        <Item>
        <ASIN>B00I8BICB2</ASIN>
        <ParentASIN>B077PSDB4X</ParentASIN>
        <DetailPageURL>https://www.amazon.com/Sony-Mirrorless-Digitial-3-0-Inch-16-50mm/dp/B00I8BICB2?psc=1&SubscriptionId_____tag=_____&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B00I8BICB2</DetailPageURL>
        <ItemLinks>
            ...
            <ItemLink>
                <Description>All Offers</Description>
                <URL>https://www.amazon.com/gp/offer-listing/B00I8BICB2?SubscriptionId=______&tag=_____&linkCode=xm2&camp=2025&creative=386001&creativeASIN=B00I8BICB2</URL>
            </ItemLink>
        </ItemLinks>
于 2018-03-12T19:37:13.977 回答