scrapy爬取图片

​ 本文以爬取SCRAPY爬虫实验室为例,爬取这个页面的图片

1.创建项目

​ 打开命令提示符或者PowerShell输入以下命令:scrapy startproject ImageSpider创建项目目录,然后依次执行cd ImageSpiderscrapy genspider ImgSpider生成ImgSpider爬虫。

2.定义item

​ 在item.py中创建图片链接的item,文件全部内容如下:

import scrapy

class ImagespiderItem(scrapy.Item):
    imgurl=scrapy.Field()
    pass

3.编辑蜘蛛文件

​ 编辑ImageSpider\ImageSpider\spiders\ImgSpider.py

代码如下:

import scrapy
from ImageSpider.items import ImagespiderItem

class ImgspiderSpider(scrapy.Spider):
    name = 'ImgSpider'				#蜘蛛名
    allowed_domains = ['lab.scrapyd.cn']
    start_urls = ['http://lab.scrapyd.cn/archives/55.html']		#蜘蛛起始链接

    def parse(self, response):
        item=ImagespiderItem()
        imgurls=response.css(".post img::attr(src)").extract()	#获取图片链接
        item['imgurl']=imgurls
        yield item
        pass

4.编辑图片下载中间件pipline:

​ 打开pipline.py代码如下:

from scrapy.contrib.pipeline.images import ImagesPipeline
import scrapy

class ImagespiderPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for image_url in item['imgurl']:
            yield scrapy.Request(image_url)

5.开启图片通道:

​ 在setting.py文件里打开图片通道,并设置图片存放目录:

IMAGES_STORE='D:\image'			#图片储存目录

ITEM_PIPELINES = {
    #打开图片通道
    'ImageSpider.pipelines.ImagespiderPipeline': 300,
}

6.启动爬虫

​ 进入ImageSpider目录,命令行运行:

scrapy crawl ImgSpider