Datehoer的博客
我本将心向明月,奈何明月照沟渠
Datehoer的博客

当前位置:主页 > 技术分享 > python pop from empty list

python pop from empty list

浏览: 作者:Datehoer 发布日期:2021-01-07 19:48:24 来源: 原创
我们在使用写爬虫的时候,大多数都是使用的requests库,然后呢,通过它获取到的链接等等,大多数都属储存在一个数组中的。
["https://zjzdmc.top","https://zjzdmc.top/jsfx/114.html","https://zjzdmc.top/jsfx/108.html","https://zjzdmc.top/jsfx/104.html"]
然后我们通过遍历数组的方式读取每个链接。
这里我一般是使用pop()这个函数,但是经常会出现一个报错pop from empty list但是我们都知道,一般写的话,都是边写边run的,所以可以确定之前储存链接的数组应该是有的啊,为什么会报错呢?


其实大多数情况还是因为这个数组的问题:
  1. 可能是我们设置的循环次数不对,多了,然后最后一个已经通过pop()删除了,再接下来就是空数组了,所以继续的话会报错。
  2. 再就是可能是因为我们的条件设置错了,一般链接都不是一个单独出现的链接,都会跟着各类标签,然后我们需要获取的时候使用xpath或者其他的方式定位错了。
  3. 还有可能是因为我们设置的条件错了,可能有人问了,这不跟上一条一样么,其实是设置的正则条件错了,一个符合的都没有,比如说我今天爬一个漫画网站,然后给爬下来的图片命名的时候我用的是正则来获取,然后不相信设置错了条件,所以符合的一个没有。
大多数情况还就是因为数组空了,所以才会出现pop from empty list这个错误,那么我们应该怎么检查呢?
当然是通过print啦,我们先把pop()后面的内容注释掉,之后加上在调用pop()的前面加上一个print来进行数组的数组,那么就可以明确的到数组的数量了,也能很快就明白到底是哪里出错了。

简单举一个例子:

name = re.findall(r'xxxxx/.*?/(.*?).jpg', new_link)
我们要获取这个图片的id然后进行命名,通过正则很容易得到效果,但是前面的内容是漫画的序号,我们需要使用.*?来进行匹配。我之前出现pop from empty list这个错误是因为我没设置好id,然后直接匹配的话,匹配的是上一个漫画的id,所以不会有内容出现,再继续执行下面的内容的话,就会报错啦。

python pop from empty list



所以出现问题一定不要惊慌,可以看一下是哪个位置出现错误,然后再在之前添加一个print输出一下效果,就能得到很好的答案了。
如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。
 







版权:本文由Datehoer原创,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接本文链接:https://zjzdmc.top/jsfx/115.html。

文章推荐

热门标签

返回顶部
下面为相关推荐
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!