Scrapy和图像抓取问题

时间:2014-06-25 10:54:21

标签: python web-scraping scrapy

所以我一直在尝试通过创建一个非常基本的爬虫来学习Python。目前,我的所有抓取工作都按预期进行,但图像除外:

我在我的settings.py中添加了一个图像存储,我通过蜘蛛成功提取了图像的URL,但它目前没有保存任何图像。

提取图片网址的行如下:

snowboard['image_URL'] = ''.join(item.xpath('li[@class="productImage"]/a/img/@data-original').extract())

这将产生以下内容:

"image_URL": "/zoom/858553/230"

在我的items.json中。

到目前为止,除了没有图像保存到我的图像存储之外,所有看起来都很好。作为参考,这是我的项目管道:

class SnowboardPipeline(object):
    def process_item(self, item, spider):
        return item

    def get_media_requests(self, item, info):
        for imageURL in item['image_URL']:
        yield Request(imageURL)

我很好奇是否与没有异常的图像有关,或者在下拉图像时我已经查看了文档中明显的一些东西。

1 个答案:

答案 0 :(得分:1)

因此对于那些好奇的人来说,我的问题基本上是图像管道需要完整的URL而不仅仅是扩展。事后看来,这很明显。

我们可以通过将urlparse导入到刮刀中,然后使用响应URL加入我们的相对图像URL来解决此问题,如下所示:

snowboard['image_urls'] = [urlparse.urljoin(response.url, snowboard['URL'])]

这将产生图像的完整URL。然后我遇到了jpeg解码器丢失的问题,但是通过安装相关的依赖项并重新安装PIL来解决这个问题。