为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第9天 Scrapy打造搜索引擎 scrapy配置图片下载

标签:
爬虫

课程名称:Scrapy打造搜索引擎(分布式爬虫)


课程章节:scrapy配置图片下载


主讲老师:bobby


课程内容:

今天学习的内容包括:scrapy配置图片下载


课程收获:

        

    1.图片下载相关配置(settings.py)

        1.settings.py中配置图像管道

                    要启用媒体管道,必须首先将其添加到项目中 ITEM_PIPELINES 设置。

                    对于图像管道,请使用:ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline':  1}

                    https://img1.sycdn.imooc.com//62f71c76000194fa12960801.jpg

                

            

        2.配置图片本地存储地址

            然后,将目标存储设置配置为用于存储下载的图像的有效值。否则,管道将保持禁用状态,即使将其包含在 ITEM_PIPELINES 设置。

            project_dir = os.path.dirname(os.path.abspath(__file__))

            IMAGES_STORE = os.path.join(project_dir, 'images')

            https://img1.sycdn.imooc.com//62f71cac0001805721840961.jpg

            


            

        3.配置下载item中的哪个字段的url地址

                IMAGES_URLS_FIELD = 'front_image_url'  #j obbole.py中yieldarticle_item后,则会下载图片并保存至images文件夹下

                https://img1.sycdn.imooc.com//62f71ce40001160c24001288.jpg





2.图片下载

        1.下载图片时出现ValueError: Missing scheme in request url: h错误

                https://img1.sycdn.imooc.com//62f71cff000118f824001288.jpg


            原因:item中的item['front_image_url']数据应该是list类型的数据而非str类型数据

                https://img1.sycdn.imooc.com//62f71d1d000150ea24001288.jpg

                https://img1.sycdn.imooc.com//62f71d2800018c0724001288.jpg

        2.图片下载成功

                https://img1.sycdn.imooc.com//62f71d5600013af524001288.jpg





3.自定义图片下载管道

    1.代码

            

# 能够定义Item并设置值,然后使得Scrapy自动将值放到Pipeline中,Pipeline中专门做数据的保存处理
class ArticlespiderPipeline:
    def process_item(self, item, spider):
        return item


# 图片下载过程中的拦截
class ArticleImagePipeline(ImagesPipeline):
    def item_completed(self, results, item, info):
        if "front_image_url" in item:
            image_file_path = ""
            for ok, value in results:
                image_file_path = value['path']
            item['front_image_path'] = image_file_path

        return item

        https://img1.sycdn.imooc.com//62f71e620001d67714630981.jpg


    

    2.查看results的值

            value['path']的值为图片存储在本地的值

                https://img1.sycdn.imooc.com//62f71e8c0001a4a924001288.jpg

                https://img1.sycdn.imooc.com//62f71e990001d46324001288.jpg

            

            注:自动将填补item['front_image_path']的值

                https://img1.sycdn.imooc.com//62f71ebb000166ae14650991.jpg

                https://img1.sycdn.imooc.com//62f71eca00016e5620641098.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消