所以我一直在尝试通过创建一个非常基本的爬虫来学习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)
我很好奇是否与没有异常的图像有关,或者在下拉图像时我已经查看了文档中明显的一些东西。
答案 0 :(得分:1)
因此对于那些好奇的人来说,我的问题基本上是图像管道需要完整的URL而不仅仅是扩展。事后看来,这很明显。
我们可以通过将urlparse导入到刮刀中,然后使用响应URL加入我们的相对图像URL来解决此问题,如下所示:
snowboard['image_urls'] = [urlparse.urljoin(response.url, snowboard['URL'])]
这将产生图像的完整URL。然后我遇到了jpeg解码器丢失的问题,但是通过安装相关的依赖项并重新安装PIL来解决这个问题。