одиночный паук для лечения нескольких предметов

Я новичок в терапии. В items.py я объявляю 2 ItemClass с именем ItemClass1 и ItemClass2. Метод spider parseUrl получает html и очищает данные и помещается в списки для соответствующих классов предметов.

e.g:
C1Items = []
C1Item = ItemClass1()
#scrape data
C1Items.append(C1Item)
...
C2Items = []
C2Item = ItemClass2()
#scrape data
C2Items.append(C2Item)
...

наконец: C1Items и C2Items содержат требуемые данные.

return C1Items #will pass ItemClass1 data to pipeline
return C2Items #will pass ItemClass2 data to pipeline

Не могли бы вы посоветовать, как наилучшим образом передавать как C1Items, так и C2Items.

3
nl ja de

2 ответы

Либо объедините все элементы разных классов в один список и верните этот список, либо используйте инструкцию yield :

C1Item = ItemClass1()
#scrape data
yield C1Item
...
C2Item = ItemClass2()
#scrape data
yield C2Item
5
добавлено
оно работает. Благодарю.
добавлено автор learnJQueryUI, источник

Просто объедините массивы в один большой массив и верните это:

return C1Items + C2Items

или, альтернативно, вы можете превратить parseUrl в функцию генератора с:

yield C1Items
yield C2Items
2
добавлено
Привет, я попробовал выход, но столкнулся с ошибкой: ОШИБКА: Паук должен вернуть Request, BaseItem или None, получить «список»,
добавлено автор learnJQueryUI, источник
получаем C1Item, тогда получаем C2Item для меня. Благодарю.
добавлено автор learnJQueryUI, источник