起先是扒了一个包,动态分页的,但这个包分页之前要加载全部的数据,我这东西后台是个爬虫,不一定浏览的完所以这么做有点浪费资源,于是我改造了一下。

# :param obj_count: 获得 条目总数
# :param obj_perpage: 定义 每页显示条目数
# :param pagetag_current: 获得 当前页码
# :param pagetag_dsp_count: 定义 显示多少个页码 这是包的参数 根据这些实现分页
obj_count = len(你的数据) 
之前我是爬完所有数据传进来,现在改成直接爬总条目。 obj_count = 总条目 然后之前给页面的值是这样
obj=你的数据[xx.obj_slice_start:xx.obj_slice_end]
xx.obj_slice_start和xx.obj_slice_end 就是通过切片给页面传递值

我看了下代码,这俩参数是通过当前页码-1*条目数,当前页码*条目数获得的。
比如说每页20条,当前第2页,就是你的数据[2-1*20:2*20]这样。 但我改完之后因为这个时候还没有数据,所以不能这么用。
obj = get_data(page_list[int(pagetag_current) - 1])
这是改完之后的,自己那俩函数就不贴了,写的比较丑。
思路就是page_list里边是爬取目标的所有分页,根据pagetag_current也就是当前页码作为下标(0起所以-1)确定爬取的页面,然后用get_data爬取这个页面。 最后出问题了,排查发现是我搞错了每页的显示条目,我设定的是20,但page_list里每一页展示的是25条,所以比如说总条目69,会分成4页,但我page_list里只有3页,就是3个元素,
加载尾页会直接越界 pagetag_current=4(尾页)(get_data(page_list[pagetag_current) - 1 也就是3 提示越界 实际只有0 1 2]))。 解决方式就是每页显示的条目数=25,然后想了一下,原作者那种方式应该也会面临越界问题,比如总条目69(为什么总要用69做例子 因为我喜欢 你懂得),用他切片的方式就是0:20 20:40 40:60 60:80
还是大牛想的多,不像我碰到问题才去琢磨处理(虽然最后那不算处理)。
赶紧去看看他的代码学习一下怎么处理的,翻了2遍也没找到处理越界的地方,最后疑惑的加了输出测试了一下,居然就是直接给的越界下标,查了一下,我擦,原来切片越界是不报的。 不管咋说,也算是学了点新东西,虽然这个动态分页还是不够完美,但也算改造成功了,加载一页爬一页数据,不像之前分页前就得爬完所有数据,不好地方就是现在每页显示的条目要根据爬取页面的一致。下一步计划把get_data写的智能一些,可以精准的获取数据。
 

												

python3 django动态分页引发的list切片下标越界问题的更多相关文章

  1. Tornado-基于正则的路由和动态分页

    概览 这一小节涉及了三部分内容: 1.动态分页设计 2.基本的路由系统以及基于正则的路由 3.模块引擎的继承和导入 4.web项目文件夹和ReuquestHandler的分类 5.跨站脚本攻击 文件结 ...

  2. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  3. django之分页,纯python代码

    Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...

  4. django 动态更新属性值

    django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...

  5. DedeCMS织梦动态分页类,datalist标签使用实例

    <?php require_once(dirname(__FILE__)."/include/common.inc.php");//载入基础文件 require_once(D ...

  6. Java 动态分页类

     动态分页类: Cls_page.java package pagination; public class Cls_page { private int nums;// 总条目数 private i ...

  7. LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页

    LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页 >>>>>>>>>>>> ...

  8. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  9. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

随机推荐

  1. xshell 连接 ubuntu 16.04报错

    outgoing encryption 错误   使用xshell和xftp连接 ubuntu 16.04 时出现找不到匹配的 outgoing encryption 算法的错误提示. 问题阐述: 在 ...

  2. IDEA使用GsonFormat完成JSON和JavaBean之间的转换

    原文地址:https://www.leshalv.net/posts/12625/ 前言: 之前处理接口传来的一堆数据,用jsonObject很难受,后面就用gosn来弄,配合这个工具体验很好. 转: ...

  3. JS中增加日期格式化原型函数之prototype

    /** * javascript Date format(js日期格式化) * 对Date的扩展,将 Date 转化为指定格式的String 月(M).日(d).小时(h).分(m).秒(s).季度( ...

  4. IOS - Display a base64 image within a UIImageView: 显示一个base64的图片

    base64字符串(base64String)-存的是image数据NSData* data = [[NSData alloc] initWithBase64EncodedString:base64S ...

  5. Project Euler 37 Truncatable primes

    题意:3797有着奇特的性质.不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797.797.97和7:同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797.37 ...

  6. 训练1-V

    输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) Output 输出A与B的最大公约数. Sample Input ...

  7. BZOJ 2959 长跑 (LCT+并查集)

    题面:BZOJ传送门 当成有向边做的发现过不去样例,改成无向边就忘了原来的思路.. 因为成环的点一定都能取到,我们把它们压成一个新点,权值为环上所有点的权值和 这样保证了图是一颗森林 每次询问转化为, ...

  8. [tyvj 1061] Mobile Service (线性dp 滚动数组)

    3月15日第一题! 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须 ...

  9. Django入门--模板路径配置及渲染

    模板就是前端的页面,Django把html源码写到模板文件中,然后通过特定方法渲染后交给客户端. 模板路径设置方法有两种,分别是在项目目录下设置以及在应用目录下设置. 模板查找顺序:优先在DIRS设置 ...

  10. ORA-29857: 表空间中存在域索引和/或次级对象

    今天小编在操作 oracle 数据库,删除表空间时引发了异常!! SQL> drop tablespace nbmap including contents; 为什么会造成以上的异常呢? 根据小 ...