手记

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

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


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


主讲老师:bobby


课程内容:

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


课程收获:

        

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

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

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

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

                    

                

            

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

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

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

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

            

            


            

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

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

                





2.图片下载

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

                


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

                

                

        2.图片下载成功

                





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

        


    

    2.查看results的值

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

                

                

            

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

                

                

0人推荐
随时随地看视频
慕课网APP