如何解决Python字符串在抓取时超出范围



我正在尝试抓取一个地址。下面是我的尝试:

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') if soup.select('div.sc-183mtny-0.IconRow___StyledBox-sc-1f6s35j-0.jqaQXH.ilrzEg span.mwxddt-0.IconRow___StyledText-sc-1f6s35j-1.hgfkgN.bkjkrD') else ""
city = city_list[2].text if city_list[2] else ""

城市名称(地址)位于我在city_list中提到的div的第三个span中。首先,我得到了div中所有跨度的列表,并尝试从中获取第三个元素。在一些网页中它不存在。因此,我使用了if else方法来检查是否存在,如果不存在,则返回"

某些情况下它运行,但结束了如下错误。

IndexError: string index out of range

我知道它说city_list[2]不存在。但是我添加了一个else方法,为什么不工作?

条件引发错误,因为列表中没有足够的条目,所以最好检查列表的长度,

city = city_list[2].text if len(city_list) > 2 else ""

或者你可以像这样使用try-except块,

try:
city = city_list[2].text
except IndexError:
city = ""

Else语句不是这样工作的,它只在if语句的条件错误时执行。这里你的条件没有出错,而是抛出了一个错误。因此,添加一个try - catch块将适合这种情况。

相关内容

  • 没有找到相关文章

最新更新