• scrapy的大文件下载(基于一种形式的管道类实现)


    scrapy的大文件下载(基于一种形式的管道类实现)

    • 爬虫类中将解析到的图片地址存储到item,将item提交给指定的管道

    • 在管道文件中导包:from scrapy.pipelines.images import ImagesPipeline

    • 基于ImagesPipeline父类,自定义一个管道类

      • 重写管道类中的如下三个方法:

        from scrapy.pipelines.images import ImagesPipeline
        import scrapy
        
        class ImgporPipeline(ImagesPipeline):
            #指定文件存储的目录(文件名)
            def file_path(self,request,response=None,info=None):
                #接受mate
                item = request.meta['item']
                return item['img_name']
            #对指定资源进行请求发送
            def get_media_requests(self,item,info):
                #meta可以传递给file_path
                yield scrapy.Request(item['img_src'],meta={'item':item})
        
            #用于返回item,将item传递给下一个即将被执行的管道类
            def item_completed(self,request,item,info):
                return item
        
        

        settings.py文件中

        #指定文件存储的目录
        IMAGES_STORE = './imgs'
        

        爬虫文件

        import scrapy
        from imgPor.items import ImgporItem
        
        class ImgSpider(scrapy.Spider):
            name = 'img'
            # allowed_domains = ['www.xxx.com']
            start_urls = ['http://www.521609.com/daxuemeinv/']
        
            def parse(self, response):
                li_list = response.xpath('//*[@id="content"]/div[2]/div[2]/ul/li')
                for li in li_list:
                    img_src = 'http://www.521609.com' + li.xpath('./a[1]/img/@src').extract_first()
                    img_name = li.xpath('./a[2]/b/text() | ./a[2]/text()').extract_first() + '.jpg'
                    print(img_name)
                    item = ImgporItem()
                    item['img_src'] = img_src
                    item['img_name'] = img_name
                    yield item
        
  • 相关阅读:
    01_Linux基础篇
    Docker
    Day02_IP地址详解&进制转换&DOS基本命令与批处理
    Day01_虚拟化架构与系统部署
    重学TCP/IP协议和三次握手四次挥手
    作为一个程序员,CPU的这些硬核知识你必须会!
    通过docker-compose制作dubbo-admin和zookeeper组合服务
    双主master-master复制Err 1677故障分析
    唐宇迪-人工智能学习路线(上篇)
    DNS访问原理只需9个步骤
  • 原文地址:https://www.cnblogs.com/zhufanyu/p/12020519.html
Copyright © 2020-2023  润新知