抓图时出错,出现exceptions.ValueError?

发布于 2022-08-31 20:38:49 字数 1437 浏览 14 评论 0

items代码:

from scrapy.item import Item, Field 
class DmozItem(Item):
    pic=Field()
    pic_src=Field()

pipeline代码:

import json
import scrapy
from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.exceptions import DropItem
from scrapy.http import Request

class TutorialPipeline(ImagesPipeline):

    def get_media_requests(self, item, info):
        for image_url in item['pic']:
            yield Request(image_url)

    def item_completed(self, results, item, info):
        image_paths = [x['path'] for ok, x in results if ok]
        if not image_paths:
            raise DropItem("Item contains no images")
        item['pic_src'] = image_paths
        return item

settings代码:

BOT_NAME = 'tutorial'

SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'

IMAGES_MIN_HEIGHT = 50
IMAGES_MIN_WIDTH = 50
IMAGES_STORE = '/ChemPic/'   #和pipelines.py同一目录
DOWNLOAD_TIMEOUT = 1200
ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline',
'tutorial.pipelines.TutorialPipeline']

其中,item['pic']已经有图片链接的绝对路径。如果没有图片,就提示“Item contains no images”,如下图所示:

图片描述
如果pic有图片路径,就会出错,如下图所示:
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文