Scrapy-提取图像

时间:2013-10-16 10:34:12

标签: python scrapy

我想使用x-path从网站http://www.jabong.com/Puma-Wirko-Ind-Black-Sneakers-187839.html中提取图片:

item['pimg'] = hxs.select('//*[@id="wrapper"]/div[2]/div[1]/div[3]/div[1]/ul/li[1]/img').extract()

我正在获取文本值。我想知道如何存储图像。请帮忙。

2 个答案:

答案 0 :(得分:0)

item['pimg'] = hxs.select('//*[@id="wrapper"]/div[2]/div[1]/div[3]/div[1]/ul/li[1]/img').extract()
counter = 0
for image_data in item['pimg']:
    with open('image_' + str(counter) + '.jpg', 'wb') as fh:
        fh.write(image_data)
    counter += 1

假设item['pimg']包含列表格式的图像字符串,并且您可以使用文件命名。

答案 1 :(得分:0)

简答:使用图片管道:http://doc.scrapy.org/en/latest/topics/images.html

但请记住,image_urls字段必须包含完全限定的网址列表。所以,你应该使用像

这样的东西
from urlparse import urljoin

    # ... this in your callback method

    item['image_urls'] = []

    for img in hxs.select('//img'):  # change the xpath to suit your needs
        # img is a selector object, select() always returns a list,
        # this might raise the exception IndexError in case the img element
        # does not have a src attribute.
        path = img.select('@src').extract()[0]
        item['image_urls'].append(urljoin(response.url, path))

如果您按照文档中的示例进行操作,则字段images将包含每个图像的元数据:校验和,路径,网址。