开发房产网页爬虫遇HTML元素索引不存在返回空该如何解决?
问题根因
你当前代码报错的核心原因是:find_all()方法在未匹配到对应元素时会返回空列表,直接对空列表取[0]索引会触发IndexError异常。
修复方案
方案1:用find()替代find_all()(最适配你的场景)
你需要的只是第一个匹配的元素,直接用find()方法即可,find()未匹配到元素时会返回None,不会直接报错:
info_extra_node = container.find('div', class_="info-right text-xs-right") info_extra = info_extra_node.text if info_extra_node is not None else ''
如果没找到元素,info_extra会被赋值为空字符串,你也可以根据需求改成其他默认值。
方案2:先判断find_all()返回的列表是否为空
如果确实需要用find_all()(比如后续还要处理其他匹配元素),可以先做非空判断:
info_extra_list = container.find_all('div', class_="info-right text-xs-right") if len(info_extra_list) > 0: info_extra = info_extra_list[0].text else: info_extra = '' # 可自定义默认值
方案3:异常捕获处理
也可以通过try-except语句捕获索引异常,适配更复杂的取值场景:
try: info_extra = container.find_all('div', class_="info-right text-xs-right")[0].text except IndexError: info_extra = '' # 未找到元素时的默认值
内容的提问来源于stack exchange,提问作者Guilherme Fadel
相关产品推荐
相关产品推荐

