`
三月沙
  • 浏览: 619484 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python--mongodb 翻页工具

 
阅读更多

由于mongodb的翻页使用的是skip,而不是limit start,end,所以计算的应该是每页应该skip的数据,以下分页工具可以完成mongodb的分页要求

 

 

#turn page util 
class Paginator(object):
    def __init__(self,total_records=None,per_page=None):

        #total records
        self.total_records = total_records
        
        #perpage size
        self.per_page = per_page
        
        #total pages
        self.total_pages = 0

        #perpage skip infor
        self.data={}

        self.__judge__()


    def __judge__(self):
        
        #caculate total pages 
        if self.total_records>self.per_page:
            self.total_pages = int(floor(self.total_records/float(self.per_page)))

            self.data[1]=Page(self,page_number=1,skip=0)

            for i in range(1,self.total_pages):
                self.data[i+1]=Page(self,page_number=i+1,skip=self.data[i].skip+self.per_page)

            #如果计算出来的页数不恰巧是个整数,那么还需要计算最后一页
            if self.total_pages<(self.total_records/float(self.per_page)):
                #计算最后一页,因为最后一页肯定是能全页显示的
                self.data[self.total_pages+1]=Page(self,self.total_pages+1,skip=self.data[self.total_pages].skip+self.per_page)
        else:
            self.total_pages=1
            self.data[1]=Page(self,1,skip=0)

    def get_page(self,page_number):
        page_number = int(page_number)
        if page_number in self.data.keys():
            return self.data[page_number]
        else:
            return None





#page 
class Page(object):

    def __init__(self,paginator,page_number=1,skip=0):

        self.page_number=page_number

        self.skip = skip

        self.paginator = paginator

        self.next_page_number = self.page_number+1

        self.prev_page_number = self.page_number-1

    def has_next(self):
        return self.page_number<self.paginator.total_records/float(self.paginator.per_page)

    def has_prev(self):
        return self.page_number>1

    def get_next_page(self):
        return self.paginator.get_page(self.next_page_number)

    def get_prev_page(self):
        return self.paginator.get_page(self.prev_page_number)
 

 

15
22
分享到:
评论

相关推荐

    Python爬虫超级大神班-requests进阶-初识反爬- Scrapy处理翻页与实现模拟登录

    6.4 自动化测试工具-selenium搞定12306 .mp4 1019.2MB 6.3 自动化测试工具-selenium入门 .mp4 1.0GB 6.22 某易云下载案例1 .mp4 636.5MB 6.21 RSA加密解密以及案例1 .mp4 684.9MB 6.20 各种加密逻辑1 .mp4 826.1...

    python爬虫学习案例-.电商独立站产品爬取.rar

    总结来说,本Python爬虫学习案例将带领我们深入理解如何使用Python爬虫技术抓取电商独立站的产品信息,包括自动翻页功能的实现,数据的提取、存储和分析。掌握这些技能不仅可以提升数据获取能力,也为后续的数据分析...

    Python爬虫程序源代码-163、百度、百度云、哔哩哔哩、中国知网爬虫程序及其说明.zip

    Python爬虫程序是数据获取的重要工具,尤其在信息丰富的互联网时代,它可以帮助我们自动化地从网站上抓取大量数据。本压缩包包含了针对163网易、百度、百度云、哔哩哔哩以及中国知网这五个不同平台的爬虫程序源代码...

    python3实现爬取淘宝美食代码分享

    - pymongo:Python的MongoDB驱动,MongoDB是一个非关系型数据库,它存储数据的方式是通过类似JSON的格式来组织,非常适合存储结构化或者半结构化的数据。 3. 环境配置:文章提到的开发环境是Ubuntu 16.04,Python...

    python 爬虫 煎蛋 妹子.zip

    6. **动态加载内容**:现代网页常使用AJAX技术动态加载内容,这需要我们使用Selenium等工具模拟浏览器行为,等待内容加载完成后再进行抓取。 7. **爬虫框架Scrapy**:Scrapy提供了一整套解决方案,包括请求调度、...

    学习Python selenium自动化网页抓取器

    本文将详细介绍如何使用Python结合Selenium实现网页自动化抓取,并介绍如何与BeautifulSoup、MongoDB等工具协同工作,提高数据处理效率。 #### 二、Python Selenium简介 ##### 2.1 Selenium简介 Selenium是一个...

    基于Python的网络爬虫技术探析.pdf

    Selenium是一种Web自动化测试工具,能够模拟真实的浏览器操作,通过控制浏览器进行网页内容的获取与操作。Scrapy是一个高效的爬虫框架,用于快速开发爬虫程序。对于特定的场景,如本例中的气象数据爬取,可以通过...

    自己动手写网络爬虫.罗刚_王振东.扫描版

    - Python安装与配置 - 必要库的安装(如Requests、BeautifulSoup、Scrapy等) 3. **HTML与CSS选择器** - HTML基础 - CSS选择器详解 4. **数据解析与提取技术** - 使用正则表达式提取数据 - 使用BeautifulSoup...

    Python使用Selenium爬取淘宝异步加载的数据方法

    ### Python使用Selenium爬取淘宝异步加载的数据方法 #### 概述 本文将详细介绍如何使用Python中的Selenium库来爬取淘宝网站上通过异步加载显示的数据。由于淘宝页面结构较为复杂,直接通过解析Ajax请求或JavaScript...

    python按综合、销量排序抓取100页的淘宝商品列表信息

    在本知识点中,我们将会介绍如何使用Python语言结合Selenium、PyQuery等库,实现对淘宝商品列表信息按综合排序和销量排序的自动化抓取。本知识不仅涵盖如何编写代码实现自动化翻页,还涉及到异常处理、数据提取等...

    Python Scrapy框架第一个入门程序示例

    Scrapy是一个强大的Python爬虫框架,它为网络数据抓取提供了高效的工具集,包括网页下载、解析、数据处理和存储等多个环节。以下是对标题和描述中提到的知识点的详细解释: 1. **Scrapy框架创建项目**:使用`scrapy...

    通过chrome插件翻页获取亚马逊评论并且传给后端

    6. **数据存储**:服务器接收到评论数据后,需要将其存储在数据库中,如MySQL、MongoDB或NoSQL数据库。同时,可能需要考虑如何处理重复评论,以及如何保持数据的一致性和完整性。 7. **安全和性能**:在实现过程中...

    首页滚动公告系统

    10. **数据分析**:通过集成Google Analytics或其他分析工具,可以追踪公告的点击率、曝光量等数据,帮助优化内容和提高用户参与度。 综上所述,首页滚动公告系统是一个涉及多方面技术的综合应用,从用户体验设计到...

    京东Spider类爬商品价格等信息(scrapy爬虫框架)

    在IT行业中,网络爬虫是数据获取的重要工具,特别是在电商领域。Scrapy是一个强大的Python爬虫框架,广泛用于高效地抓取网页数据。本项目聚焦于利用Scrapy框架设计一个Spider,来抓取京东网站上的商品价格等关键信息...

    摇钱树CMS免费小说APP系统 带后端

    后端可能使用了如Java、Python或PHP等服务器端语言,搭配数据库管理系统如MySQL或MongoDB存储小说数据。前端可能采用了React、Vue.js或Angular等前端框架,提供高性能的用户体验。 二、功能特性 1. 内容管理:系统...

    即时端漫画微信小程序源码

    前端部分主要负责用户界面的展示和交互,包括漫画的展示、翻页效果、搜索功能、分类浏览等。开发者可能使用了微信小程序的开发框架,如WXML和WXSS进行页面布局和样式设计,以及JavaScript进行逻辑处理。通过微信...

    网络版动漫阅读器(详细)

    常见的后端技术有Node.js、Python的Django或Flask框架、Java的Spring Boot等,它们能够处理用户的请求,如登录、获取动漫列表、章节内容等,并将数据以JSON格式返回。为了存储和管理大量的动漫资源,数据库系统如...

    豆瓣爬虫程序.rar

    2. 选择合适的库:Python是爬虫开发的常用语言,拥有如BeautifulSoup、Scrapy等强大的库支持。BeautifulSoup用于解析HTML文档,提取所需数据;Scrapy则是一个完整的框架,可以更高效地管理爬虫项目,包括请求调度、...

    web NBA中文官网源码

    可能使用了像PHP、Python、Java或Node.js等服务器端语言,配合数据库(如MySQL、MongoDB)进行数据存储和操作。 3. **用户认证**:登录和注册功能涉及到用户身份验证和权限管理。这通常涉及到密码加密存储、会话...

Global site tag (gtag.js) - Google Analytics