Python Scrapy意外跳过了一些页面

Python Scrapy意外跳过了一些页面,python,scrapy,Python,Scrapy,我正在编写一个用于迭代“下一页”爬虫的刮擦爬虫。 我的代码如下: def parse(self, response): while self.current_page<=self.total_page: self.current_page = int(self.selector.css("something").extract()[-1]) for post_node in self.selector.css("div.info-column"

我正在编写一个用于迭代“下一页”爬虫的刮擦爬虫。 我的代码如下:

def parse(self, response):

    while self.current_page<=self.total_page:

        self.current_page = int(self.selector.css("something").extract()[-1])

        for post_node in self.selector.css("div.info-column"):
            yield {
                "location": post_node.css("something").extract(),
            }
        logging.info("************** now page is %d **************", self.current_page)
        logging.info("********** one page done,Going to next **********")

        try:

            self.next.send_keys('\n')
def解析(self,response):
while self.current_page(抱歉……我还不能对你的问题发表评论,因为我没有足够的代表)
请发布更多代码…或日志本身。基于配置,存在如此多的分歧点,我们需要更多信息进行诊断。这里有太多其他代码可能交互不好

在执行logging.info语句时,self.current_页面肯定会过时/误导。自我是蜘蛛的对象。如果任何其他代码生成由parse()处理的链接,则在执行日志语句时,当前的_页将过时/重新分配

我注意到你的指纹在产量之后: 在您再次尝试迭代函数后,yield将暂停函数并从该位置恢复。也许你是被误导了,因为你的日志。信息的发生方式与页面的实际处理方式不同

scrapy downloader队列是后进先出(后进先出)。因此,它将在返回尝试迭代'first'parse()调用之前处理“new”内容

我猜您正在尝试在AJAXy网页上操作,其中发送“\n”会在引擎盖下加载一个新的“页面”

可能发生的情况是,加载第一页,设置当前页面,生成新项目,处理新项目,新链接由未显示的其他规则或机制生成,对这些链接调用解析,将当前页面设置为这些新页码。。。一堆其他的东西…,最后你最初的parse()调用被要求它的下一项,它从yield语句中恢复,并用错误的当前页面号记录“now page is%d”


我的答案可能是假设事情不一定是真的,因为缺乏信息……但至少如果它能给你一些东西来思考。

谢谢你的帮助。经过数小时的调试。当我切换到xpath定位器时,我终于让它工作了。当我读到他们对selector.css函数的评论时。据说css选择器被翻译成xpath。我不确定这是否是因为css选择器的稳定性。但是xpath对我来说一直工作稳定。