Два последовательных урожая, только первая работа - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть этот кусок кода, который выполняет только обратный вызов первого yield, а не следующий.Я попытался переупорядочить их, и это дает тот же результат: выполняется только первый обратный вызов yield.

    for j in range(totalOrderPages):  # the code gets in the loop
        productURI = feedUrl % (productId, j + 1)
        print "Got in the loop" # this gets printed 
        yield response.follow(productURI, self.parse_orders, meta={'pid': productId, 'categories': categories})
    yield response.follow(first_page, self.parse_product, meta={'pid': productId, 'categories': categories})

Есть ли что-нибудь в Python или scrap, что предотвращает 2 последовательных выхода?

Второй вопрос: я пытаюсь отладить это с помощью pdb.set_trace (), но когда я пытаюсь выполнить yield с консоли отладки, выдается ошибка yield outside function.

Кто-нибудь знает, как мы можем отладить выходы?

Спасибо.

1 Ответ

0 голосов
/ 10 декабря 2018

Не зная более подробной информации, такой как поведение перенаправления определенного сайта или содержимое переменных (feedUrl, productURI, first_page и т. Д.), Я бы сказал, что некоторые запросы отбрасываются Dupefilter(https://doc.scrapy.org/en/latest/topics/settings.html#dupefilter-class). Я бы порекомендовал вам включить уровень ведения журнала DEBUG и настройку DUPEFILTER_DEBUG=True, а также проверить журналы, чтобы убедиться, что это так. Вы можете заставить запросы обходитьDupefilter, добавив dont_filter=True при вызове response.follow.

Если это не решит вашу проблему, пожалуйста, поделитесь своими журналами сканирования, чтобы мы могли получить больше информации для устранения проблемы. Удачи!

...