我查看了许多示例和类似问题,但无法解决此问题,如果您能提供帮助,则感谢您。
我安装了 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
我已经尝试了几个小时的任何想法
答案 0 :(得分:1)
您使用了错误的字段名称。
Scrapy 的 ImagesPipeline
默认使用 image_urls
,你有 img_urls
。
如果您真的想使用您的名字,可以使用 IMAGES_URLS_FIELD
设置进行更改。