Scrapy 返回图像 SRC URL 但不下载图像

时间:2021-06-01 08:49:15

标签: python scrapy

我查看了许多示例和类似问题,但无法解决此问题,如果您能提供帮助,则感谢您。

我安装了 Pillow 并且取消了以下设置的注释

SPIDER_MIDDLEWARES = {'takaratomy.middlewares.TakaratomySpiderMiddleware': 543,}
DOWNLOADER_MIDDLEWARES = {'takaratomy.middlewares.TakaratomyDownloaderMiddleware': 543,}

终端没有返回错误并正确返回直接链接但没有下载图像,创建了文件夹但没有保存图像。我猜 items.py 或管道缺少一些信息,为了便于查看,我已经撤回了一些图像结果。

我已经尝试了默认的 Item_Pipeline,但也给出了相同的结果

#ITEM_PIPELINES = {'takaratomy.pipelines.TakaratomyPipeline': 300,}

 <GET https://takaratomymall.jp/shop/g/g4904810104957/> (referer: None)
2021-06-01 17:26:14 [scrapy.core.scraper] DEBUG: Scraped from <200 
https://takaratomymall.jp/shop/g/g4904810104957/>
{'img_urls': ['https://takaratomymall.jp/img/usr/header/tt_logo_tomy1_1.png', 
'https://takaratomymall.jp/img/goods/5/4904810104957_9ddae881c00e43b4866201ccb3c92abe.jpg', 
'https://takaratomymall.jp/img/goods/L/4904810104957_b6d7dcacc3e34ee9863dddd49e432190.jpg',
 'https://takaratomymall.jp/img/goods/C/4904810104957_bf967f02392c4e9190fad6e24f635b8b.jpg', 
'https://takaratomymall.jp/img/goods/1/4904810104957_ad5bfbb36fb6484dbfced3d1f16a17c4.jpg'],
 'images': []}
2021-06-01 17:26:14 [scrapy.core.engine] INFO: Closing spider (finished)

蜘蛛.py

import scrapy

class TakaratomyscraperSpider(scrapy.Spider):
name = 'takaratomyscraper'

start_urls = ['https://takaratomymall.jp/shop/g/g4904810104957']
             

def parse(self, response):
    dlimages = response.css('img ::attr(src)').getall()
    finalimages = []
    for img_urls in dlimages:
        finalimages.append(response.urljoin(img_urls))

    yield {
        'img_urls': finalimages
    }

items.py

import scrapy

class TakaratomyItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass

settings.py

BOT_NAME = 'tomybot'

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

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

 ROBOTSTXT_OBEY = False

pipelines.py

class TakaratomyPipeline:
 def process_item(self, item, spider):
    return item

我已经尝试了几个小时的任何想法

1 个答案:

答案 0 :(得分:1)

您使用了错误的字段名称。
Scrapy 的 ImagesPipeline 默认使用 image_urls,你有 img_urls

如果您真的想使用您的名字,可以使用 IMAGES_URLS_FIELD 设置进行更改。