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

# :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. Visual Studio 2015中 安卓环境 cannot find adb.exe in specified sdk path

    安装完成后 发现 C:\Program Files (x86)\Android\android-sdk\platforms 是空的,用SDK Manager进行安装时发现 它需要往C:\Program ...

  2. redi通过哨兵sentinel实现主从切换

    本次实验主要为了让哨兵监听redis主从复制,当主节点关闭后,哨兵会选举一台从节点成为主节点,并且让其他从节点变成新主节点得从节点 本次理论需要三台机器,一主两从,为了方便用一台服务器开启三个实例,一 ...

  3. 搞定PHP面试 - 函数知识点整理

    一.函数的定义 1. 函数的命名规则 函数名可以包含字母.数字.下划线,不能以数字开头. function Func_1(){ } //合法 function func1(){ } //合法 func ...

  4. Myeclipse中将项目上传到码云

    公司实习之后习惯是代码上传到svn上,最近想起来个人的一些代码上传的到码云上比较方便,根据网上分享的博客内容结合自己的整理记录 其中大多数是参考了https://blog.csdn.net/izzyl ...

  5. 【hdu 4135】Co-prime

    [题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 让你求出[a..b]这个区间内和N互质的数的个数; [题解] 利用前缀和,求出[1 ...

  6. spring data JPA 中的多属性排序

    在此介绍我所用的一种方式: 第一步,引包 import org.springframework.data.domain.Sort;import org.springframework.data.dom ...

  7. ZOJ 2314 Reactor Cooling

    Reactor Cooling Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Origina ...

  8. 【explain】MySQL联表查询中的驱动表

    写在前面 1.不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程 2.不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小 3 ...

  9. chrome隐身模式无法播放flash的解决办法

    困扰很多天的chrome无法播放flash的问题终于解决了 因为之前一直用隐身模式,一直不能播放flash,重装chrome,重装插件,还是不行 结果今天发现正常模式是可以播放的,所以找了一下chro ...

  10. HDU 4351

    求某区间各个子集的和的根的最大的五个数. 子集根其实就是这个数模9后的余数,注意的是要区分0和9,两者的余数都是0.. 记录前i个数的和的根,设为sum数组,然后处理两个数组 lft[i][j]表示从 ...