Правильный вывод из нескольких разбора определений в классе Scrapy - PullRequest
0 голосов
/ 14 апреля 2019

Я извлекаю данные с одной страницы, затем перебираю URL-адреса с этой страницы и получаю некоторую другую информацию с других страниц. Но вывод не верный - см. Скриншот. Элементы из второго 'def' теряются в выводе, и их сортировка не совпадает с элементами из первого 'def'! Проверьте мне структуру кода ниже. СПАСИБО!

***

def parse(self, response):
    rows = ***

    for row in rows:
        item = Items()
        item['number'] = ***
        item['name'] = ***
        ***
        yield item

        urls = ***

        for url in urls.extract():
            yield Request(urlparse.urljoin(response.url, url), callback=self.parse_player)

def parse_player(self, response):
    item = Items()
    item['mainposition'] = ***
    item['altposition'] = ***
    yield item

результат на скриншоте: https://snag.gy/tCaDm3.jpg

1 Ответ

0 голосов
/ 14 апреля 2019

Я думаю, вы должны собрать имя и т. Д. На первой странице;тогда не поддавайтесь, просто передайте его через meta на следующую страницу;и только потом выдают весь предмет.Как здесь:

def parse(self, response):
    rows = ***
    for row in rows:
        item = Items()
        item['number'] = ***
        item['name'] = ***
        # don't yield item here!

        urls = ***
        for url in urls.extract():
            yield Request(response.urljoin(url), self.parse_player, meta={'item': item})

def parse_player(self, response):
    item = response.meta['item']
    item['mainposition'] = ***
    item['altposition'] = ***
    yield item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...