我们在使用写爬虫的时候,大多数都是使用的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输出一下效果,就能得到很好的答案了。
如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。

本文作者:博主:     文章标题:python pop from empty list
本文地址:https://zjzdmc.top/jsfx/115.html     
版权说明:若无注明,本文皆为“Datehoer的Blog-个人博客-技术分享”原创,转载请保留文章出处。
最后修改:2021 年 04 月 19 日 05 : 03 PM
如果觉得我的文章对你有用,请随意赞赏