Как получить ответ от scrapy.Request без обратного вызова? - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу отправить запрос и ждать ответа от сервера, чтобы выполнить действия, зависящие от действий. Я пишу следующее

resp = yield scrapy.Request(*kwargs)

и получил None в соотв. В документации я нахожу, что нужно использовать функцию call_back, но это вызов функции после обработки следующих команд. Как ждать ответ от сервера?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Это не совсем то, как следует использовать скрапинг, поскольку ожидание ответа - то же самое, что использование обратного вызова. Если вам нужно продолжать обрабатывать предыдущие ответы вместе с новым, вы всегда можете передать и продолжать передавать ответ на аргумент meta .

Теперь, чтобы сделать это иногда более читабельным, вы также можете использовать scrapy-inline-requests, который делает то же самое, что объяснено ранее под капотом, так как он не останавливает копирование, но выполняет следующий запрос по порядку (аналогично выполнению запроса за другим с обратными вызовами).

При использовании scrapy-inline-requests, пожалуйста, будьте осторожны, чтобы методы были только генераторами, а также отправляли новые запросы или элементы при обработке нового встроенного запроса.

0 голосов
/ 05 сентября 2018

Мне нравится модуль inline_requests, у которого есть декоратор inline_requests. Это решит мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...