网页爬取忽略大小写匹配文本失败,报AttributeError错误求助
解决方法
错误原因很明确:当前网页里存在没有文本内容的<td>标签,这类标签的string属性是None,直接调用text.lower()就会触发AttributeError。其他网页没有这类空文本的td,所以代码能正常运行。
给你两种修复方案:
方案1:先判断文本是否存在再处理
修改lambda表达式,先检查text不为None,再转小写判断:
texto_licitacion = results.find_all("td", string=lambda text: text and "bienes" in text.lower())
方案2:用正则表达式匹配(更简洁)
利用BeautifulSoup支持正则的特性,直接用re.compile加上忽略大小写的参数:
import re # 其他代码不变... texto_licitacion = results.find_all("td", string=re.compile(r"bienes", re.IGNORECASE))
两种方法都能避免空文本导致的报错,同时实现忽略大小写筛选包含指定内容的td标签。
内容的提问来源于stack exchange,提问作者Arturo
相关产品推荐
相关产品推荐

