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