Web scraping 如何避免当前页面和下一页之间无休止的循环

Web scraping 如何避免当前页面和下一页之间无休止的循环,web-scraping,scrapy,web-crawler,Web Scraping,Scrapy,Web Crawler,我试图抓取多个页面,但我的爬虫程序最终在第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_fi

我试图抓取多个页面,但我的爬虫程序最终在第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>


谢谢

很难调试使用下一页选择器时发生的情况。还有一种更简单的方法可以浏览您需要的所有页面。您可以使用爬行蜘蛛的“解析”方法。在“parse”方法内部,您可以从页面获取数据,然后获取下一个页面URL,通过回调equal self.parse获得收益。它将打开下一页URL,并使用下一页URL响应再次运行“parse”方法

from scrapy.spiders import CrawlSpider


class SomeSpider(CrawlSpider):
    name = 'SAME NAME'
    allowed_domains = ['ALLOWED DOMAINS HERE']
    start_urls = ['START_URL'

    def parse(self, response):
        # First you get all data from current page.
        urls = response.css('div.title a::attr(href)').extract()

        for url in urls:
            yield response.follow(url, callback=self.parse_data_page)

        # Second you get next page URL and yield it with callback.
        next_page = response.css('span.page-link a::attr(href)').extract_first()
        yield response.follow(next_page, callback=self.parse})

    def parse_data_page(self, response):
        # Pars

你能同时显示当前页面和下一页的HTML片段吗?默认情况下,Scrapy会跳过重复的请求,所以这应该不是问题。是否已禁用重复请求筛选?(例如,您是否向您的请求传递了
dont\u filter=True
)我确实传递了don'u filter=True。没有它,爬虫就无法到达下一页,第2页。但是下一页有一个链接返回到第1页,正如你在上面所看到的。对不起,我知道问题出在哪里了。我将允许的域设置为“www.domain.org/”,删除“www”和“/”似乎有效。