首页 > 其他分享 >【BUG】已解决:IndexError: list index out of range

【BUG】已解决:IndexError: list index out of range

时间:2024-07-15 20:54:39浏览次数:8  
标签:index IndexError simple list pypi https com

 已解决:IndexError: list index out of range

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

             欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人

            擅长.net、C++、python开发, 如果遇到技术问题,即可私聊博主,博主一对一为您解答

             修改代码、商务合作:

    Yan--yingjie

    Yan--yingjie

    Yan--yingjie

 

背景

        在学习Python和使用Scrapy进行信息爬取的过程中,我遇到了一个常见的问题:IndexError: list index out of range。这个错误通常发生在尝试访问列表中不存在的索引时。为了克服这个问题,我决定探索不同的解决方案。

报错原因

        IndexError: list index out of range错误是因为尝试访问的列表索引超出了已定义的范围。这通常发生在循环或条件语句中,当程序尝试访问一个不存在的元素时。

解决方法

方法一:添加try except异常处理

        为了防止因错误而停止程序的运行,我采用了在出现异常时跳过该条数据的方法,并通过添加try except来实现这一点。这样,即使在遇到错误的情况下,程序也能继续运行,从而增加了数据的收集量。

def get_URLs(urls):
for x in urls:
        try:
            # 数据处理代码
        except:
            print('第{0}条数据处理失败'.format(x))

        这种方法虽然可以暂时解决问题,但并没有从根本上解决IndexError的问题,只是治标不治本。

方法二:根本解决策略

        通过仔细分析报错信息和页面结构,我发现问题的根源在于某些情况下,页面上的数据列表长度与预期不符。特别是在处理薪资信息时,如果薪资字段为空,直接使用CSS选择器可能会导致无法正确获取数据。

为了解决这个问题,我采取了以下步骤:

  1. 检查每个列表的实际长度:在循环之前,先检查每个需要处理的数据列表的实际长度。
  2. 使用正则表达式匹配空值:对于可能为空的薪资字段,我使用正则表达式来匹配和提取有效信息,确保即使在薪资字段为空的情况下也能正确处理。
import re

str = '<span class="t4">1万 - 1.6万</span>'
searchObj = re.search (r'<span class="t4">(.*?)</span>', str , re.M|re.I)
salary = searchObj.group (1)
print(salary) 

        通过这种方法,我能够有效地处理那些可能包含空值的情况,从而避免了IndexError的发生。

结论

        通过上述两种方法的实践,我成功地解决了在使用Scrapy进行信息爬取时遇到的IndexError: list index out of range问题。这两种方法各有优势,第一种方法适用于需要快速恢复程序运行的情况,而第二种方法则从根本上解决了问题,提高了数据处理的准确性。

 

【其他错误】

如果出现模块错误

进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

我大致罗列了以下几种国内镜像源:

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple
     
阿里云
https://mirrors.aliyun.com/pypi/simple/
     
豆瓣
https://pypi.douban.com/simple/
     
百度云
https://mirror.baidu.com/pypi/simple/
     
中科大
https://pypi.mirrors.ustc.edu.cn/simple/
     
华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/
     
腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

标签:index,IndexError,simple,list,pypi,https,com
From: https://blog.csdn.net/m0_73367097/article/details/140448717

相关文章

  • java List集合转Map并遍历输出
    1.使用流转map并且遍历packagecom.demo.toMap;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;publicclassMianDemo{publicstaticvoidmain(String[]args){List<NodeList>list=......
  • 手写TodoList
    手写TodoList<scriptsetup>import{ref}from'vue'//给每个todo对象一个唯一的idletid=0constnewTodo=ref('')consttodos=ref([{id:id++,text:'LearnHTML'},{id:id++,text:'LearnJavaScript'},......
  • JDK8 Lambda java.io.File listFiles
    File[]files=dir.listFiles((dir1,name)->name.toLowerCase().endsWith(".jpg")||name.toLowerCase().endsWith(".png"));File[]files=dir.listFiles(newFilenameFilter(){publicbooleanaccept(Filedir,Stringname) { ......
  • USART串口协议 和va_list,va_start,va_end,vsprintf
    串口接口通信的目的:将一个设备的数据传送到另一个设备扩展硬件系统通讯协议:制定通信的规则,通信双方按照协议规则进行数据收发。注意:差分信号一般传输速度和距离都会非常高。多设备相当于老师在教师给所有同学讲课,点对点相当于老师找你到办公室谈话。串口是一种应用......
  • 易优CMS模板标签pagelist列表分页只显示首页、上下页、末页
    [基础用法]标签:pagelist描述:调用列表分页页码(注:需要在list标签下使用。)用法:{eyou:listpagesize='10'titlelen='30'infolen='160'}<ahref='{$field.arcurl}'>{$field.title}</a>{/eyou:list}{eyou:pagelist listitem='index,pre......
  • {eyou:artlist typeid='栏目ID' limit='0,10' flag='c' titlelen='30
    artlist文档列表(配合arcpagelist标签可实现ajax瀑布流分页)[基础用法]标签:artlist描述:获取网站栏目(如:文章、产品、图集、软件等)的一些文章。用法:{eyou:artlisttypeid='栏目ID'limit='0,10'flag='c'titlelen='30'infolen='160'orderby='add_time'} ......
  • ArrayList
    创建ArrayList不指定初始大小List<String>list=newArrayList<>();调用无参构造方法,创建一个初始容量为10的空列表privatestaticfinalintDEFAULT_CAPACITY=10;privatestaticfinalObject[]DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};publicArrayList(){......
  • LinkedList
    静态内部类NodeprivatestaticclassNode<E>{Eitem;//双向链表Node<E>next;Node<E>prev;Node(Node<E>prev,Eelement,Node<E>next){this.item=element;this.next=next;this.prev......
  • 如何更好的优化 ListView 控件的性能
    ......
  • Alist+阿里云盘+小雅-搭建家庭影院
    MarkdownExample小雅安装......