Я пишу XMLFeedSpider (https://doc.scrapy.org/en/1.4/topics/spiders.html#xmlfeedspider),, который должен анализировать дополнительную информацию из URL в элементах. Но когда я получаю response.follow
в parse_node
, следующий узел не будет проанализирован / толькопервый узел и один запрос response.follow
будут проанализированы. Последующий ответ каким-то образом нарушает итерацию в parse_nodes
. Есть идеи, как решить эту проблему?
Код вообще
сокращен и очищен
class example_domainSpider(XMLFeedSpider):
name = 'example_domain'
allowed_domains = ['example_domain.org']
start_urls = ['https://items.example_domain.org/some-api']
iterator = 'iternodes'
itertag = 'Some_Item'
Item = None
def parse_node(self, response, selector):
xml_data = dict()
# a lot of selectors to fill xml_data
# pass data to next method, so it can be combined in one item
return response.follow(link, self.parse_item, meta={'xml_data': xml_data})
def parse_item(self, response):
self.Item = item()
xml_data = response.request.meta['xml_data']
# fill item with the data from xml
for key, value in xml_data.items():
self.Item[key] = value
# a lot of selectors to fill self.Item
yield self.Item