self.property
- это атрибут класса, который используется всеми вызовами на parse2
, и вы не можете контролировать порядок каждого вызова на parse2
.
Чтобы решить эту проблему, вам нужно передать список свойств внутри мета или как атрибут элемента:
def parse(self, response):
for one_item in response.xpath('path1'):
item = ProjectItem()
item['field'] = []
request = scrapy.Request(one_item.xpath('path2'), callback=self.parse2)
request.meta['item'] = item
yield request
def parse2(self, response)
item = response.meta['item']
for x in response.xpath('path3')
item['field'].append('path4')
next_page = response.xpath('path5')
if next_page is not None:
request2 = scrapy.Request(next_page, callback=self.parse2)
request2.meta['item'] = item
yield request2
else:
yield item