У вас есть очень хороший элемент на вашей странице link[rel=next]
. Таким образом, вы можете реорганизовать свой код следующим образом: проанализировать страницу, позвонить дальше, проанализировать страницу, позвонить дальше и т. Д.
def parse(self, response):
for item in response.css("[id^='fc-post-']"):
datime = item.css("a.datePermalink span::attr(title)").get()
message = item.css('div.messageContent blockquote').extract()
datime = parser.parse(datime)
yield {"message":message,"datatime":datime}
next_page = response.css('link[rel=next]::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)
UPD: вот код, который очищает данные с последней страницы на первую:
class TeslamotorsclubSpider(scrapy.Spider):
name = 'teslamotorsclub'
allowed_domains = ['teslamotorsclub.com']
start_urls = ['https://teslamotorsclub.com/tmc/threads/tesla-tsla-the-investment-world-the-2019-investors-roundtable.139047/']
next_page = 'https://teslamotorsclub.com/tmc/threads/tesla-tsla-the-investment-world-the-2019-investors-roundtable.139047/page-{}'
def parse(self, response):
last_page = response.xpath('//div[@class = "PageNav"]/@data-last').get()
if last_page and int(last_page):
# iterate from last page down to first
for i in range(int(last_page), 0, -1):
url = self.next_page.format(i)
yield scrapy.Request(url, self.parse_page)
def parse_page(self, response):
# parse data on page
for item in response.css("[id^='fc-post-']"):
last_page = response.xpath('//div[@class = "PageNav"]/@data-last').get()
datime = item.css("a.datePermalink span::attr(title)").get()
message = item.css('div.messageContent blockquote').extract()
datime = parser.parse(datime)
yield {"last_page":last_page,"message":message,"datatime":datime}