Python 从AmazonAPI获取所有图像URL

Python 从AmazonAPI获取所有图像URL,python,api,amazon,Python,Api,Amazon,您可以使用以下代码获取amazon上某个特定项目的第一个图像URL: from amazon.api import AmazonAPI amazon = AmazonAPI(aws_key='XXX', aws_secret='XXX', aws_associate_tag='XXX', region="DE") product = amazon.lookup(ItemId='B003P0ZB1K') print(product.large_image_url) 但是,如何才能访问该项目的所

您可以使用以下代码获取amazon上某个特定项目的第一个图像URL:

from amazon.api import AmazonAPI

amazon = AmazonAPI(aws_key='XXX', aws_secret='XXX', aws_associate_tag='XXX', region="DE")
product = amazon.lookup(ItemId='B003P0ZB1K')
print(product.large_image_url)

但是,如何才能访问该项目的所有图像URL,而不是仅获取第一个?谢谢。

您需要在请求中包含“图像”响应组

product=amazon.lookup(ItemId='B003P0ZB1K',ResponseGroup='Images')

然后可以通过images属性访问XML图像集列表,但需要使用XML解析器进行解析

product.images

请参阅本文,了解有关在python中解析XML的信息:

参考:

从库的源代码:

@property
def images(self):
    """List of images for a response.
    When using lookup with RespnoseGroup 'Images', you'll get a
    list of images. Parse them so they are returned in an easily
    used list format.
    :return:
        A list of `ObjectifiedElement` images
    """
    try:
        images = [image for image in self._safe_get_element(
            'ImageSets.ImageSet')]
    except TypeError:  # No images in this ResponseGroup
        images = []
    return images
图像集XML如下所示:

<ImageSets>
  <ImageSet Category="primary">
  <SwatchImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL30_.jpg</URL>
  <Height Units="pixels">30</Height>
  <Width Units="pixels">23</Width>
  </SwatchImage>
  <SmallImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">58</Width>
  </SmallImage>
  <ThumbnailImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">58</Width>
  </ThumbnailImage>
  <TinyImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL110_.jpg</URL>
  <Height Units="pixels">110</Height>
  <Width Units="pixels">86</Width>
  </TinyImage>
  <MediumImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL160_.jpg</URL>
  <Height Units="pixels">160</Height>
  <Width Units="pixels">124</Width>
  </MediumImage>
  <LargeImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L.jpg</URL>
  <Height Units="pixels">500</Height>
  <Width Units="pixels">389</Width>
  </LargeImage>
 </ImageSet>
</ImageSets>

https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL30_.jpg
30
23
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg
75
58
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg
75
58
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL110_.jpg
110
86
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL160_.jpg
160
124
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L.jpg
500
389

您需要在请求中包含“图像”响应组

product=amazon.lookup(ItemId='B003P0ZB1K',ResponseGroup='Images')

然后可以通过images属性访问XML图像集列表,但需要使用XML解析器进行解析

product.images

请参阅本文,了解有关在python中解析XML的信息:

参考:

从库的源代码:

@property
def images(self):
    """List of images for a response.
    When using lookup with RespnoseGroup 'Images', you'll get a
    list of images. Parse them so they are returned in an easily
    used list format.
    :return:
        A list of `ObjectifiedElement` images
    """
    try:
        images = [image for image in self._safe_get_element(
            'ImageSets.ImageSet')]
    except TypeError:  # No images in this ResponseGroup
        images = []
    return images
图像集XML如下所示:

<ImageSets>
  <ImageSet Category="primary">
  <SwatchImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL30_.jpg</URL>
  <Height Units="pixels">30</Height>
  <Width Units="pixels">23</Width>
  </SwatchImage>
  <SmallImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">58</Width>
  </SmallImage>
  <ThumbnailImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">58</Width>
  </ThumbnailImage>
  <TinyImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL110_.jpg</URL>
  <Height Units="pixels">110</Height>
  <Width Units="pixels">86</Width>
  </TinyImage>
  <MediumImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL160_.jpg</URL>
  <Height Units="pixels">160</Height>
  <Width Units="pixels">124</Width>
  </MediumImage>
  <LargeImage>
  <URL>https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L.jpg</URL>
  <Height Units="pixels">500</Height>
  <Width Units="pixels">389</Width>
  </LargeImage>
 </ImageSet>
</ImageSets>

https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL30_.jpg
30
23
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg
75
58
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL75_.jpg
75
58
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL110_.jpg
110
86
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L._SL160_.jpg
160
124
https://ecx.images-amazon.com/images/I/51YL4rlI%2B9L.jpg
500
389

谢谢,也试过了,但还是有问题。我没有得到图片URL,而是得到了某种参考<代码>[,]查看源代码,有一个属性@images将返回所有图像URL的列表,您应该可以使用:
产品访问该属性。图像
我想我遗漏了一些东西。。。这就是我的代码:
product=amazon.lookup(ItemId='B003P0ZB1K',ResponseGroup='Images')打印(product.Images)
。它会打印出我在上一篇评论中发布的参考文本。。。谢谢。你使用的是什么版本的amazon.api?另外,响应是元素对象的列表,这意味着来自AmazonAPI的XML响应没有被解析。Python 3.5.2:Python Amazon简单产品API 2.2.11谢谢,也尝试过了,但仍然存在问题。我没有得到图片URL,而是得到了某种参考<代码>[,]查看源代码,有一个属性@images将返回所有图像URL的列表,您应该可以使用:
产品访问该属性。图像
我想我遗漏了一些东西。。。这就是我的代码:
product=amazon.lookup(ItemId='B003P0ZB1K',ResponseGroup='Images')打印(product.Images)
。它会打印出我在上一篇评论中发布的参考文本。。。谢谢。你使用的是什么版本的amazon.api?另外,响应是元素对象的列表,这意味着来自AmazonAPI的XML响应没有被解析