ошибка scrapy RuntimeError: для использования селекторов XPath или CSS экземпляр ItemLoader создается с помощью селектора

#python-3.x #scrapy #web-crawler #scrapy-item

#python-3.x #scrapy #веб-сканера #scrapy-item

Вопрос:

У меня есть ProductItemlLoader просто простое ItemlLoader , которое загружается в простое ProductItem с offer_type полем

Я запускаю этот код:

 il = ProductItemLoader(response=response)
il.add_css('offer_type', '.incentive-type-label')

  

и получить:
RuntimeError: To use XPath or CSS selectors, ItemLoader be instantiated with a selector

Что я делаю не так??

Ответ №1:

Более лаконичный способ объявления ItemLoader следующий :

item = ItemLoader(item=ProductItem(), selector=response)

Если вы выполняете цикл по циклу более широкого селектора :

 sel = response.xpath('//xpath/selection')    # return a list of Selectors

for one_product in sel:
    item = ItemLoader(item=ProductItem(), response=response, selector=one_product)
    # item populating
    # yielding the item

  

Ответ №2:

Итак, получается, что у меня был этот код, работающий на scrapy 1.4, и теперь я перешел на scrapy 2.3 .

В старой версии это работало нормально, но теперь, чтобы использовать селекторы, мне пришлось добавить несколько строк и удалить старые.

Поэтому вместо этого: il = ProductItemLoader(response=response)

Теперь мне нужно было сделать это:

 from scrapy.selector import Selector

selector = Selector(response=response, type='html')
il = AudiDealItemLoader(selector=selector)
  

ссылка из документации