Одно из решений - очистить x количество страниц, но это не всегда хорошее решение, если общее количество страниц не является постоянным:
class MySpider(scrapy.spider):
num_pages = 10
def start_requests(self):
requests = []
for i in range(1, self.num_pages)
requests.append(scrapy.Request(
url='www.demopage.com/category_product_seo_name?page={0}'.format(i)
))
return requests
def parse(self, response):
#parse pages here.
Обновить
Вы также можете отслеживать количество страниц и делать что-то вроде этого. a[href~="?page=2"]::attr(href)
будет нацеливаться на a
элементы, атрибут href
которых содержит указанную строку. (В настоящее время я не могу проверить, работает ли этот код, но что-то в этом стиле должно сработать)
class MySpider(scrapy.spider):
start_urls = ['https://demopage.com/search?p=1']
page_count = 1
def parse(self, response):
self.page_count += 1
#parse response
next_url = response.css('#pagination > ul > li > a[href~="?page={0}"]::attr(href)'.format(self.page_count))
if next_url:
yield scrapy.Request(
url = next_url
)