我尝试抓取多个页面,但我的爬虫程序最终在第1页和第2页之间循环。如何编写只向前移动的脚本?我尝试了以下选择器,但无法从第1页移动到第2页。
NEXT_PAGE_SELECTOR = '//span[@class="page-link"]//span[contains(text(),"»")]/preceding-sibling::a/@href'
nextPageUrl = response.urljoin(response.xpath(NEXT_PAGE_SELECTOR).extract_first())
在第1页
<span class="page-link"><a href=".../page/2/"><span aria-hidden="true">»</span><span class="sr-only">Next page</span></a></span>
在第2页
<span class="page-link"><a href=".../page/1/"><span aria-hidden="true">«</span><span class="sr-only">Previous page</span></a></span>
谢谢
1条答案
按热度按时间insrf1ej1#
当你使用NEXT_PAGE_SELECTOR时,很难调试所发生的事情。有另一种更简单的方法来浏览你需要的所有页面。你可以使用CrawlSpider的“parse”方法。在“parse”方法中,你可以从页面中获取数据,然后获取下一页的URL,用回调等于self.parse来生成一个yield。它将打开下一页的URL,并再次运行“parse”方法,得到下一页的URL响应。