Как динамически изменить номер страницы в FormRequest по запросу POST при сканировании нескольких страниц с помощью Scrapy - PullRequest
0 голосов
/ 12 января 2020

Веб-сайт, который я хочу сканировать, использует метод POST для получения данных, вместо перехода к нумерации страниц. Получение первой страницы теперь выглядит великолепно, используя этот метод:

    def start_requests(self):
        formdata = {
            ...
            'PageIndex': '0',
            ...
        }
        return [
            FormRequest('my-url', formdata=formdata, callback=self.parse)
        ]

Я проверил следующую страницу и попытался yield следующую страницу как следующий код:

    current_page = 0
    ....

    def parse(self, response):
        next_page = Selector(response).css('a.viewmore').extract_first()
        if next_page is not None:
            self.current_page = self.current_page + 1
            formdata = {
                ...
                'PageIndex': self.current_page,
                ...
            }
            yield FormRequest('my-url', formdata=formdata, callback=self.parse)

Это где это сломано. Я получил журнал ошибок здесь, и я могу только предположить, что способ, которым я назначаю self.current_page, вызывает неправильный результат.

enter image description here

Я использую macOS, python3 (версия 3.8.1), scrapy 1.8.0. Кто-нибудь может мне помочь с этим и помочь мне назначить динамический c номер страницы для запроса POST, как этот? Заранее спасибо!


Обновление: я понял, что строка self.current_page должна быть приведена следующим образом: 'PageIndex': str(self.current_page). Эта проблема решена!

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