上次说到了,如何构建一个爬虫系统,并介绍了下怎么利用scrapy解析页面信息。

这次介绍下如何爬去页面中的图片。

这里还是以 www.guoku.com 为例。


首先,需要在你的 scrapy 的 settings.py 加入一下配置

ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1
} IMAGES_STORE = '/tmp/images' #设置下载图片的目录

然后,EntityItem 加入image_urls, 和 images 字段


class EntityItem(scrapy.Item):
brand = scrapy.Field(
input_processor=MapCompose(remove_tags),
output_processor=TakeFirst(),
)
title = scrapy.Field(
input_processor=MapCompose(remove_tags),
output_processor=TakeFirst(),
)
price = scrapy.Field(
input_processor=MapCompose(remove_tags),
output_processor=TakeFirst(),
)
image_urls = scrapy.Field() # 这个字段是页面中图片的 URL images = scrapy.Field() # 这个字段代表 图片下载到本地后的路径。

最后,还是要解析下html 页面来提取 图片链接

def pares_entity(self, response):
self.logger.info(response.url)

item = ItemLoader(item=EntityItem(), response=response)
item.add_css('brand', 'div.brand')
item.add_css('title', 'div.entity-title')
item.add_css('price', 'div.price-tag > span', re='(\d+\.\d+)')
#这里就是提取 html 中我们需要下载的图片链接 item.add_css('image_urls', 'div.other-pic-list > a > img::attr(src)') return item.load_item()


注:

这里我使用了 ItemLoader 来构建 一个商品实例。具体怎么用可以参考 >> scrapy.org <<。


项目源代码