Такое ощущение, что каждый сделанный мной запрос просто не существует после первого, и аргумент ответа почему-то всегда является ответом на первый запрос, даже если метод был вызван другим запросом.
Цикл бесконечен, потому что я не могу поймать последнюю страницу API, поскольку все запросы отправляются к первой странице. Почему так?
from typing import Iterable
import scrapy
from scrapy.exceptions import CloseSpider
class ScrollSpider(scrapy.Spider):
name = 'scroll'
page = 1
headers={
# this API requires these headers:
"Referer": "https://web-scraping.dev/testimonials",
"X-Secret-Token": "secret123",
}
def start_requests(self):
yield scrapy.Request(f'https://web-scraping.dev/api/testimonials?page=1', headers=self.headers, callback=self.parse)
def parse(self, response):
if response.status != 200:
raise CloseSpider(f'Receive {response.status} status code')
testimonials = response.css('div.testimonial')
for testimonial in testimonials:
yield {
'user_name': testimonial.css('identicon-svg::attr("username")').get(),
'testimonial': testimonial.css('p::text').get(),
'rating': len(testimonial.css('span svg').getall())
}
self.page += 1
url = f'https://web-scraping.dev/api/testimonia ... {self.page}'
yield response.follow(url, headers=self.headers, callback=self.parse)
Подробнее здесь: https://stackoverflow.com/questions/787 ... first-page