在scrapy下载图像时获取钩子失败

时间:2012-12-19 09:30:43

标签: python django scrapy

我正在尝试使用抓取工具从网站下载图片。

我的抓取工具运行正常,数据库正在进行中

这是scrapy的调试

2012-12-20 09:25:23+0800 [working] DEBUG: Crawled (200) <GET http://www.example.com/images/28_34.jpg> (referer: None)
2012-12-20 09:25:23+0800 [working] DEBUG: Image (downloaded): Downloaded image from <GET http://www.example.com/images/28_34.jpg> referred in <None>
2012-12-20 09:25:23+0800 [working] WARNING: 'image_downloaded hook failed'
2012-12-20 09:25:23+0800 [working] DEBUG: Scraped from <200 http://www.example.com/profile.php>
        {'image_urls': ['http://www.example.com/images/28_34.jpg'],
         'number_pts': [u'5710'],
         'profile_link': [u'profile.php'],
         'title': [u'test1']}

我在设置和IMage商店中设置了scrapy.contrib.pipeline.images.ImagesPipeline

1 个答案:

答案 0 :(得分:1)

scrapy中没有与您的问题相关的错误。

在项目中定义这两个字段对于使用ImagesPipeline下载图像是必须的。

image_urls = Field()
images = Field()

1)在Spider中,您抓取一个项目并将其图像的URL放入image_urls字段。

2)该项目从蜘蛛返回并转到项目管道。

3)当项目到达ImagesPipeline时,image_urls字段中的URL计划使用标准Scrapy调度程序和下载程序(这意味着重新使用调度程序和下载程序中间件)进行下载,但具有更高的优先级,在之前处理它们其他页面被刮掉了。该项目在该特定管道阶段保持“锁定”,直到图像完成下载(或由于某种原因失败)。

4)下载图像时,将在结果中填入另一个字段(图像)。该字段将包含一个dicts列表,其中包含有关下载图像的信息,例如下载的路径,原始抓取的URL(取自image_urls字段)和图像校验和。图像字段列表中的图像将保留原始image_urls字段的相同顺序。如果某些图像下载失败,将记录错误,图像将不会出现在图像字段中。