如何解决Python网页抓取时出现的字符串索引越界问题
问题根源
- 第一个逻辑漏洞:你在
soup.select匹配不到元素时,将city_list赋值为空字符串,而非空列表。后续你尝试对字符串取索引[2],当字符串长度不足3时,就会直接触发索引越界报错。 - 第二个逻辑漏洞:即便
soup.select返回了列表,你直接写city_list[2]做判断的动作本身就有问题——如果列表长度不足3,取索引的动作会先于判断执行,直接抛出报错,你写的if else逻辑根本不会生效。
修复方案
直接调整逻辑,避免重复调用soup.select,先判断列表长度再取值即可:
# 匹配结果默认是列表,匹配不到返回空列表,不需要额外加else转成空字符串 city_list = soup.select('div.sc-183mtny-0.IconRow___StyledBox-sc-1f6s35j-0.jqaQXH.ilrzEg span.mwxddt-0.IconRow___StyledText-sc-1f6s35j-1.hgfkgN.bkjkrD') # 先判断列表长度是否≥3,再取对应元素 city = city_list[2].text if len(city_list) >= 3 else ""
内容的提问来源于stack exchange,提问作者user17087759
相关产品推荐
相关产品推荐

