Веб-сайт, который я хочу сканировать, использует метод 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
, вызывает неправильный результат.
Я использую macOS
, python3
(версия 3.8.1
), scrapy
1.8.0
. Кто-нибудь может мне помочь с этим и помочь мне назначить динамический c номер страницы для запроса POST
, как этот? Заранее спасибо!
Обновление: я понял, что строка self.current_page
должна быть приведена следующим образом: 'PageIndex': str(self.current_page)
. Эта проблема решена!