scrapy爬取图片

本文以爬取[SCRAPY爬虫实验室](http://lab.scrapyd.cn/page/1/)为例,爬取[这个页面](http://lab.scrapyd.cn/archives/55.html)的图片

1.创建项目

打开**命令提示符**或者**PowerShell**输入以下命令:`scrapy startproject ImageSpider`创建项目目录,然后依次执行`cd ImageSpider`和`scrapy 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
Last moify: 2023-02-04 01:03:05
Build time:2025-07-18 09:41:42
Powered By asphinx