scrapy 实战(二)如何爬取页面中的图片信息
上次说到了,如何构建一个爬虫系统,并介绍了下怎么利用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 <<。