我正在尝试抓取一个地址。下面是我的尝试:
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块将适合这种情况。