scrapy 使用其他抓取信息的零碎图像管道文件名

mwkjh3gx  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(133)

有没有办法命名一个抓取图像与其他信息(文本),我们得到的蜘蛛?例如,在这种情况下,我想与文章标题和文章发表日期,我在蜘蛛图像:

蜘蛛程序文件


# lines of code

def parse(self, response):

    # lines of code 

    yield {
            'date':date,
            'title': article_title,
            'image_urls': clean_urls
    }

管道.py

from scrapy.pipelines.images import ImagesPipeline

class customImagesPipeline(ImagesPipeline):
    def file_path(self, request, response=None, info=None, *, item=None):
        return f"images/{request.url.split('/')[-1]}"
vvppvyoh

vvppvyoh1#

实现这一点的一种方法是覆盖get_media_requests方法,并在image requests meta属性上设置图像名称,这样就可以在file_path方法中访问它。
如果您将一个图像url作为字符串传递给image_urls,则下面的示例将起作用:

from scrapy.http import Request
from scrapy.pipelines.images import ImagesPipeline

class customImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        return Request(
            item["image_urls"],
            meta = {
                "image_name": f"{item['title']}_{item['date']}",
            }
        )

    def file_path(self, request, response=None, info=None) -> str:
        return f"images/{request.meta['image_name']}.jpg"

相关问题