• 利用scrapy下载图片保存到本地


    1.先声明一下,起始位置已经是将所有的图片链接都能到pipelines.py中

    2.创建一个类,继承于ImagesPipeline,因此也就需要导入ImagesPipeline

    from scrapy.pipelines.images import ImagesPipeline

    3.由于继承自ImagesPipeline类,且该类下有一个get_media_requests方法需要被重写

    def get_media_requests(self, item, info):

    4.由于是通过链接来获取图片,就少不了scrapy.Request(图片链接)这个方法

    import scrapy

    5.向图片链接发请求后得到的响应会保存到settings.py中的IMAGES_STORE路径中,因此要去配置一下settings.py,

    IMAGES_STORE = "/home/zengsf/spider/Douyu/Douyu/Images"

    6.别忘了你创建的pipelines.py中的类需要在settings.py中的ITEM_PIPELINES中添加

    ITEM_PIPELINES = {
        # 'Douyu.pipelines.DouyuPipeline': 300,
        'Douyu.pipelines.DouyuImagePipline': 200,
    }

    所有代码:

    from scrapy.pipelines.images import ImagesPipeline
    import scrapy
    
    
    class DouyuPipeline(object):
        def process_item(self, item, spider):
            # 可以写存储数据库逻辑
            return item
    
    
    class DouyuImagePipline(ImagesPipeline):
        # 此方法不能变
        def get_media_requests(self, item, info):
            # 1 获取图片链接
            imageLink = item["imgLink"]
            # 2 向图片链接发请求,响应会保存在settings.py中的IMAGES_STORE路径中
            yield scrapy.Request(imageLink)
            return item
  • 相关阅读:
    mac os 基本命令
    一个程序员的郁闷吐槽
    域名那些事儿
    EventEmitter事件派发器
    Array类型的操作方法
    居中与垂直居中
    Web Storage —— 登录时记住密码
    字符串字符统计
    颜色字符串转换(正则)
    将字符串转换为驼峰格式
  • 原文地址:https://www.cnblogs.com/zengsf/p/10049270.html
Copyright © 2020-2023  润新知