第六章 Scrapy框架(十五) 2020-03-17

十五、Scrapy框架–实战–zcool网站精选图高速下载(4


Scrapy下载图片


1、解析图片的链接。

2、定义一个item,上面有两个字段,一个是image_urls,一个是images。其中images_urls是用来存储图片的链接,由开发者把数据爬取下来后添加的。

3、使用scrapy.pipelines.images.ImagesPipeline来作为数据保存的pipeline

4、在settings.py中设置IMAGES_STORE来定义图片下载的路径。

5、如果想要有更复杂的图片保存的路径需求,可以重写ImagePipelinefile_path方法,这个方法用来返回每个图片的保存路径。

6、而file_path 方法没有item对象,所以我们还需要重写get_media_requests方法,来把item绑定到request上。示例代码如下:


class ImagedownloadPipeline(ImagesPipeline):

    def get_media_requests(self, item, info):

        media_requests =super(ImagedownloadPipeline, self).get_media_requests(item, info)

        for media_request in media_requests:

            media_request.item = item

        return media_requests

 

    def file_path(self, request, response=None,info=None):

        origin_path =super(ImagedownloadPipeline, self).file_path(request, response, info)

        title = request.item['title']

        title = re.sub(r,'[\\/:\*\?"<>]', "", title)

 

        save_path =os.path.join(settings.IMAGES_STORE, title)

        if not os.path.exists(save_path):

            os.mkdir(save_path)

        imsge_name =origin_path.replace("full/", "")

        return os.path.join(save_path,imsge_name)


7、在创建文件夹的时候,要注意一些特殊字符是不允许作为文件夹的名字而存在的,那么我们就可以通过正则表达式来删掉     r, '[\\/:\*\?"<>]'



上一篇文章 第六章 Scrapy框架(十四) 2020-03-16 地址:

https://www.jianshu.com/p/2febb184009d

下一篇文章 第六章 Scrapy框架(十六) 2020-03-18 地址:

https://www.jianshu.com/p/99c60ce24571



以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。

你可能感兴趣的:(第六章 Scrapy框架(十五) 2020-03-17)