Scrapy学习笔记九--Downloading and processing files and images

    xiaoxiao2021-04-12  37

    item pipelines 对爬取的数据进行处理,如下载图片,保存等等

    Files Pipeline 处理文件

    Images Pipeline 处理图片下载

    每个pipelines都需实现以下特色:

    如果最近有下载记录,避免重复下载指定存储media(爬取的数据)的路径

    images Pipeline 增加了额外的功能:

    将下载的图片转化为同一的格式JPG和RGB生成缩略图 检查图片长宽确保满足大小的限制

    images pipeline 提供内置的队列(当前创建下载任务—URLmedia)并保留在队列中,然后从Response中取得相同的media并连接到队列,避免多个项目(item)共享多次下载相同的media——-队列中的URL只提供一次下载

    Using the Files Pipeline (下载文件)

    当使用FilesPipeline流程是这样的:

    通过spider爬取数据item,并把它放入file_urls字段中

    spider 返回item 并传入 item pipeline

    当item传入FilesPipeline,file_urls字段中URL就要被安排进行下载,这个过程中scrapy的调度程序(Scheduler)和下载器(downloader)发挥作用(此过程中Scheduler和Downloader会被重复调用),他们具有较高的优先级,会在爬取其他pages前执行, item会保持‘lock’状态直到下载完成或者因为其他原因失败

    当所有files都下载完成,可以把结果填充在其他的field中(如 files)。另外this field 会把下载的文件信息,如下载地址,从file_url中取出的原始URL或者file checksum保存在一组字典容器中。如果下载过程中出错,会产生错误日志,下载的文件不会呈现在 files 字段中

    Using the Images Pipeline (下载图片)

    和files类似。 使用image_url 和 images 字段 优点 : 你可设置些额外功能 ,如:产生缩略图或者过滤图片的大小

    Pillow(取代PIL)使用Images Pipeline所需要的组件(产生缩略图,或者设定JPEG/RGB 格式)

    Enabling your Media Pipeline (如何使pipeline生效)

    1.要使你的media pipeline生效需要对你项目中 "ITEM_PIPELINES setting" 进行配置 : eg.1

    ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1}

    eg.2

    ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline': 1}

    2.完成1步骤后,需设置有效路径保存下载结果。未设置时,media_pipeline不工作 eg.1

    FILES_STORE = '/path/to/valid/dir'

    eg.1

    IMAGES_STORE = '/path/to/valid/dir'

    Supported Storage

    File system storage 使用SHA1 hash作为文件的名字 < IMAGES_STORE >/full/3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg #<IMAGES_STORE> 是在IMAGES_STORE setting 定义的 #full 是子目录将完整图片和缩略图区分开 待续
    转载请注明原文地址: https://ju.6miu.com/read-667416.html

    最新回复(0)