请选择 进入手机版 | 继续访问电脑版

笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

下载和处理文件和图像

发布者: 笨鸟自学网



请参见以下自定义图像管道中可以覆盖的方法:

classscrapy.pipelines.images.ImagesPipeline

这个 ImagesPipeline 是 FilesPipeline ,自定义字段名并为图像添加自定义行为。

file_path(selfrequestresponse=Noneinfo=None*item=None)

每个下载的项调用一次此方法。它返回源于指定的 response .

除了……之外 response ,此方法接收原始的 request , info 和 item

可以重写此方法以自定义每个文件的下载路径。

例如,如果文件URL以常规路径结束(例如 https://example.com/a/b/c/foo.png ,您可以使用以下方法将所有文件下载到 files 文件夹及其原始文件名(例如 files/foo.png ):

import os
from urllib.parse import urlparse

from scrapy.pipelines.images import ImagesPipeline

class MyImagesPipeline(ImagesPipeline):

    def file_path(self, request, response=None, info=None, *, item=None):
        return 'files/' + os.path.basename(urlparse(request.url).path)

同样,您可以使用 item 根据某些项属性确定文件路径。

默认情况下 file_path() 方法返回 full/<request URL hash>.<extension> .

2.4 新版功能: 这个 item 参数。

get_media_requests(iteminfo)

工作方式与 FilesPipeline.get_media_requests() 方法,但对图像URL使用不同的字段名。

必须返回每个图像URL的请求。

item_completed(resultsiteminfo)

这个 ImagesPipeline.item_completed() 当一个项目的所有图像请求都已完成时(要么已完成下载,要么由于某种原因失败),将调用方法。

工作方式与 FilesPipeline.item_completed() 方法,但使用不同的字段名存储图像下载结果。

默认情况下, item_completed() 方法返回项。


上一篇:调试内存泄漏下一篇:部署蜘蛛

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-5 23:28 , Processed in 0.021935 second(s), 17 queries .

© 2001-2020

返回顶部