0

我正在尝试使用爬虫从站点下载图像。

我的爬虫工作正常,数据库中也有东西

这是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']}

我已经scrapy.contrib.pipeline.images.ImagesPipeline在设置和图像存储中设置了

4

1 回答 1

1

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

在使用 ImagesPipeline 下载图像时,必须在 items 中定义这两个字段。

image_urls = Field()
images = Field()

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

2) 项目从蜘蛛返回并进入项目管道。

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

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

于 2012-12-19T09:43:13.193 回答