Python爬虫报错IndexError: list index out of range?

你都不验证下列表里面是不是有元素, 你就 [0] 取值了, 出现索引越界不是很正常吗. 你最好先 len() >= 1 判断下啊.

}

这两年,python是如火如荼,许多人都在学python,我也不例外,最近利用业余时间在家学习使用python爬取信息。
这两天,我基于Scrapy,利用有限的时间写了个比较简陋的爬虫去爬一些素材网站,睡觉时开启爬虫。

第二天起来发现,查看数据库,只有4k+条数据,这个程序只爬了几个小时,就被一个名叫IndexError: list index out of range的错误给绊倒了!网上一搜,大部分都是在使用爬虫过程中会出现这个问题。

list在读取的时候下标是从0开始读取的,list在已经定义的范围内,我们可以读取到索引值对应的值,但是如果下标没有定义,那么他的值是没有办法读取到的,这个时候也就是为社么会出现IndexError: list index out of range

找到原因,才能从根本解决问题。
这个是我从下面的经历中,领悟出来的 =. = “

由于前几天还要上班,只要能继续跑就行了,使用了一个出现异常就跳过的方法
在下班回家之后,在修改了一下,添加了 异常处理try: ... except: ...


修改过后,第二天看爬去的数据量,比第一天多了,如下图
添加了try except 虽然可以暂时解决了因报错停止运行,但是问题还是在的,治标不治本。

这两天周末,找了个招聘网爬取一下招聘信息,想着之前的demo写得比较烂再重新写一个
好端端的怎么越界了= =
我用len()方法,获取到了包含数据父元素的个数,当前页面是有50条数据的
然后用 for x in range()方法,循环将数据以一定格式输出

然后就最后一条抛异常了,爬了3页,几乎每一页都是最后一条抛异常。

好吧,我找了半天找不到,我先和朋友吐槽一下先。

跟朋友说到range()的参数是当前页面的标题数量,提醒我看看那个报错当行位置,被选中的元素长度是多少。


注释掉之后,云淡风轻,什么错也没有 。

所以原因出在这里,万万没有想到是这个原因
what?!! 顿时觉得被命运绊倒
只能怪自己分析页面的时候没有多翻几页 = =’’

根本解决:查看报错行数,找到出错的list,输出长度,如果有不同的list,分别输出一下list的长度

最终,我是使用了正则匹配,拿到了这个可能为空的值

}

版权声明:本文为博主原创文章,遵循 版权协议,转载请附上原文出处链接和本声明。

可是在子函数进行测试的时候明明是不存在这个问题的

可是我在用Page_Turner()这个函数进行调试的时候就不会报错

是我主函数写的有问题吗?

}

我要回帖

更多关于 python valueerror 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信