У меня есть следующий простой паук, состоящий из трех файлов.Моя цель - правильно использовать загрузчик элементов, чтобы заполнить данные, которые я сейчас отбрасываю.pipeline.py
является простым создателем файла json, как описано в документации по scrapy.
items.py
from scrapy.loader import ItemLoader
class FoodItem(scrapy.Item):
brand = scrapy.Field(
input_processor=TakeFirst(),
output_processor=Identity()
)
name = scrapy.Field(
input_processor=TakeFirst(),
output_processor=Identity()
)
description = scrapy.Field(
input_processor=TakeFirst(),
output_processor=Identity()
)
last_updated = scrapy.Field()
spider.py
class MySpider(CrawlSpider):
name = 'Test'
allowed_domains = ['zooplus.fr']
start_urls = [
'https://www.zooplus.fr/shop/chats/aliments_specifiques_therapeutiques_chat/problemes_urinaires_renaux_chat/croquettes_therapeutiques_chat/595867',
]
def parse_item(self, response):
l = ItemLoader(item=PetfoodItem(),response=response)
l.add_xpath('brand', '//*[@id="js-breadcrumb"]/li[4]/a/span/text()')
l.add_xpath('name', '//*[@id="js-product__detail"]/div[1]/div[2]/div[1]/h1/text()')
l.add_xpath('description', '//*[@id="js-product__detail"]/div[1]/div[2]/div[1]/div[1]/meta/@content')
l.add_value('url', response.url)
l.add_value('last_updated', 'today')
l.load_item()
return l.load_item()
Если я делаю это вручную и точно копирую код паука в оболочку, я точно заполняючто я хочу.Xpath наверняка прав, потому что это уже жестко закодированный и функциональный паук, который я хочу усовершенствовать, используя конвейеры и загрузчик элементов.Я не могу понять, где есть очевидная ошибка.Это выглядит довольно просто, хотя.Любые идеи приветствуются.