龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 编程语言 > Python > scrapy 图片下载(一):三行代码实现scrapy图片下载

scrapy 图片下载(一):三行代码实现scrapy图片下载

龙行    Python    2019-8-27    146    0评论    本文已被百度收录点击查看详情

各位看官,欢迎回到scrapy中文网!这一期,我们说点scrapy的神马呢?过年回来,有同学说想学学scrapy下载图片,大伙目的很单纯就是想爬妹子图!那接下来我们就来一发scrapy实战:scrapy 图片下载!scrapy图片下载其实灰常简单,就是编写一个pipeline中间件,然后就可以愉快下载了!我们先爬取这个网址的图片练练手:http://lab.scrapyd.cn/archives/55.html


一、首先我们创建蜘蛛项目

命令行输入:

创建蜘蛛文件,最终生成的目录结构如下:

import scrapy

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

scrapy下载图片


二、定义item

既然我们要下载图片,肯定要得到图片的链接,也就是src里面的内容,因此我们需要定义一个item,用来存放图片链接,于是乎:items.py文件定义如下:

定义了一个item:imgurl,这里你随便定义!好了之后我们开始来编写我们的蜘蛛!

三、创建蜘蛛文件

我们进入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()  # 实例化item
        imgurls = response.css(".post img::attr(src)").extract() # 注意这里是一个集合也就是多张图片
        item['imgurl'] = imgurls
        yield item
        pass

若对上面细节不清楚,请查看:scrapy中文文档

四、图片下载中间件pipeline编写:

打开pipeline.py进行中间件编写,这里的话主要继承了scrapy的:ImagesPipeline这个类,我们需要在里面实现:def get_media_requests(self, item, info)这个方法,这个方法主要是把蜘蛛yield过来的图片链接执行下载,灰常的简单,代码如下:

class ImagespiderPipeline(ImagesPipeline):

    def get_media_requests(self, item, info):
        # 循环每一张图片地址下载,若传过来的不是集合则无需循环直接yield
        for image_url in item['imgurl']:
            yield Request(image_url)

五、设置,启动图片下载

万事俱备,接下来就启动我们的下载中间件,还有一个问题,那图片存在哪里呢?scrapy给我们提供了一个常量:IMAGES_STORE,我们只需要在settings.py里面设置即可,来我们看一下settings里面的设置:

#图片存储位置
IMAGES_STORE = 'D:\ImageSpider'
#启动图片下载中间件
ITEM_PIPELINES = {
   'ImageSpider.pipelines.ImagespiderPipeline': 300,
}

六、启动爬虫

进入ImageSpider目录,命令行输入:

scrapy crawl ImgSpider

你将会发现,图片已经乖乖的躺在:D:\ImageSpider目录里了

scrapy图片下载



总结:

scrapy下载图片和我们平时开发一模一样,唯一多的就是需要你多定义一个item保存图片的地址,这也很合理,木有图片我们怎么下载呀?然后再把地址传给自定义的pipeline下载,pipeline也非常的简单,可以看到就几行代码。

不满足的同学可能就有疑问了,为什么里面的图片名称都是些乱七八糟的字符,如果我要个性化的命名,要肿么办呢?若你有同样需求,不妨继续观看scrapy中文网下一篇文章:《scrapy图片下载(二):scrapy图片重命名放入不同目录


本文完全转载自 scrapy中文网

评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/284.html
  • 上篇文章:scrapy 图片下载(二):scrapy图片重命名、放入不同文件夹
  • 下篇文章:scrapy爬取ygdy8
  • python3 scrapy
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
四四五五
音乐欣赏
返回顶部