Использование response.follow в XMLFeedSpider - PullRequest
0 голосов
/ 02 ноября 2019

Я пишу 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
...