文档章节

python爬虫框架scrapy学习图片下载

子夜闻雪
 子夜闻雪
发布于 2016/07/26 17:15
字数 343
阅读 88
收藏 2

文档地址:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/images.html

实践例子: 目的:抓取http://www.hlhua.com/页面里面商品的图片

  1. 根据文档所说,先创建item用来保存图片数据,为了能够使ImagesPipeLine生效,这个item需要有名为image_urls的field属性: items.py
    import scrapy

    class MyItem(scrapy.Item):
        image_urls = scrapy.Field()
        image_paths = scrapy.Field()
        images = scrapy.Field()
  1. 继承ImagesPipeLine编写自己的ImagesPipeLine pipeline.py
    import scrapy
    from scrapy.exceptions import DropItem
    from scrapy.pipelines.images import ImagesPipeline

    class MyImageDownloadPipeLine(ImagesPipeline):

        def get_media_requests(self, item, info):
            for image_url in item['image_urls']:
                yield scrapy.Request(image_url)

        def item_completed(self, results, item, info):
            image_paths = [x['path'] for ok, x in results if ok]
            if not image_paths:
                raise DropItem("Item contains no images")
            item['image_paths'] = image_paths
            return item

这里重写的item_completed用来在下载完成后保存image_path属性 3. 编辑settings.py使能MyImageDownloadPipeLine settings.py

    # coding=utf-8
    BOT_NAME = 'imagedemo'

    SPIDER_MODULES = ['imagedemo.spiders']
    NEWSPIDER_MODULE = 'imagedemo.spiders'

    # 使能ImagePipeLine
    ITEM_PIPELINES = {'imagedemo.pipelines.MyImageDownloadPipeLine': 1}
    # 指定图片文件保存的未知
    IMAGES_STORE = 'image'

    ROBOTSTXT_OBEY = True
  1. 编写spider实现爬虫逻辑 spider.py
    # coding=utf-8
    from scrapy.spiders import Spider
    from imagedemo.items import MyItem

    class ImageSpider(Spider):
        name = 'hlhua'
        start_urls = ['http://www.hlhua.com/']

        def parse(self, response):
            # inspect_response(response, self)
            images = []
            for each in response.xpath("//img[@class='goodsimg']/@src").extract():
                m = MyItem()
                m['image_urls'] = [each,]
                images.append(m)
            return images
  1. 执行scrapy crawl hlhua -o images.json,即可在image/full/下载图片,并生成images.json记录图片信息。

github: https://github.com/chenglp1215/scrapy_demo/tree/master/imagedemo

© 著作权归作者所有

共有 人打赏支持
子夜闻雪
粉丝 3
博文 37
码字总数 16415
作品 0
海淀
程序员
私信 提问
小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验

引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网页以获取我们需要的数据。 对于经常重复用到的代码,我们都会单独抽取成自己的模块,...

coder_pig
2018/07/04
0
0
[雪峰磁针石博客]2018最佳人工智能数据采集(爬虫)工具书下载

Python网络数据采集 Python网络数据采集 - 2016.pdf 本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第 1部分重点介绍网络数据采集...

python测试开发人工智能安全
2018/11/07
0
0
高级爬虫(一):Scrapy爬虫框架的安装

Hi 小伙伴们差不多有半个月没有更新干货了,一直有点忙,而且这中间还有曲折过程,也就没有更新文章. 但今天无论如何也要更新一篇文章,接下来是爬虫高级篇重点讲解的地方! 最近会连载Scrap...

Python绿色通道
2018/04/22
0
0
Python3爬虫视频学习教程

大家好哈,现在呢静觅博客已经两年多啦,可能大家过来更多看到的是爬虫方面的博文,首先非常感谢大家的支持,希望我的博文对大家有帮助! 最近,主要的任务就是开发性感美女图片大全,使用p...

yangjiyue0520
2017/11/18
0
0
Python多线程爬图&Scrapy框架爬图

一、背景 对于日常Python爬虫由于效率问题,本次测试使用多线程和Scrapy框架来实现抓取斗图来表情。 由于IO操作不使用CPU,对于IO密集(磁盘IO/网络IO/人家交互IO)型适合用多线程,对于计算...

KaliArch
2018/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js开发环境搭建说明(mac)

vue开发环境搭建(mac) 投影放大:cmd + + 安装Node 下载Node 官网下载 https://nodejs.org/en/download/ 安装Node 双击安装包,选择安装目录,比如: /usr/local/bin 安装成功后最好记录一...

Danni3
23分钟前
2
0
Qt编写自定义控件3-速度仪表盘

前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业...

飞扬青云
29分钟前
1
0
【论文阅读】Image Super-Resolution via Deep Recursive Residual Network

题目:通过深度递归残差网络实现图像的超分辨率 摘要: 近年来,基于卷积神经网络的模型在单张图像的超分辨率上已经取得了巨大的成功。由于深度网络的强大,这些CNN模型学习了从低分辨率输入...

云烟成雨forever
31分钟前
2
0
为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
50分钟前
14
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部