1

我需要通过 perl 使用亚马逊产品 API 来获取给定 ASIN 的第三方新旧(市场)报价列表。我需要能够查看价格以及每个报价是否由亚马逊履行(有资格享受优质/超级优惠运输)。我已经搜索了 Net::Amazon 模块,但我没有看到任何方法可以做到这一点。

有没有人做过类似的事情?

4

1 回答 1

0

所以我自己也在调查这个,看起来亚马逊提供的商品'IsEligibleForSuperSaverShipping' => '1'在优惠中具有属性。所以这将是这样的:

my $ua = Net::Amazon->new(
    associate_tag => 'derpderp',
    token         => 'morederp',
    secret_key    => 'herpaderp',
);

my $rsp = $ua->search( asin => 'B000FN65ZG' );

if ($rsp->is_success()) {
    if (my $o = $rsp->{xmlref}->{Items}->{Offers}) {
        foreach my $offer (keys %{ $o }) {
            if ($o->{$offer}->{IsEligibleForSuperSaverShipping}) {
                # This is offered by Amazon.com
            } # if
        } # foreach
}
else {
    die "Error: ", $rsp->message(), "\n";
}
  • 请注意,截至撰写本文时(2013 年 11 月 4 日),ASIN 是通过亚马逊配送的;将来可能不会。

这里的问题是Net::Amazon它神奇地生成了它的访问器(而不是使用Class::Accessor,但它已经过时了,所以我们可以原谅它......)。我不确定上述{Items}元素中各个商品的正确访问器是什么。进入你的对象有点危险,但在这种情况下,找到正确的访问器不应该那么难(考虑到它是自动生成的)并且除非这样,我认为你可以很舒服地直接进入对象。

此外,您可能会建议与作者的作者 Mike Schilli 或当前的维护者Christopher Boumenot 联系,这可能是值得的,特别是如果这是亚马逊一贯的结果并且可以添加到 API 中。问题在于亚马逊的回报是可变的。引用perldoc

方法因查询返回的项目而异。这是最常见的。它们都是访问器,这意味着它们可以用于Method()检索值或Method($value)设置字段的值。

这使得假设您可以测试超级节省运费的回报变得很棘手,因为它可能只是在返回的结构中没有那个键。

于 2013-11-04T20:02:18.487 回答