如何在列表推导式中为不存在的<a>标签或href属性设置默认值?
解决方法
直接在列表推导式里用条件表达式处理td.a不存在的情况,同时用get()方法给href设置默认空字符串,就能保持列表推导式的风格:
columns = row.find_all('td') result = [(td.text.strip(), td.a.get('href', '') if td.a else '') for td in columns] print(result)
代码说明
td.text.strip():清理文本前后的空白字符(可根据实际需求去掉.strip()),确保提取的文本格式整洁td.a.get('href', '') if td.a else '':- 先判断当前
<td>标签下是否存在<a>标签(td.a不为None) - 如果存在
<a>标签,用get('href', '')获取href属性——即使<a>标签没有href属性,也会返回空字符串 - 如果不存在
<a>标签,直接返回空字符串
- 先判断当前
对应示例的运行结果
针对你给出的HTML结构,运行后会得到:
[('12.649.000,18', ''), ('Brussels', '/whatever/1.html'), ('Belgium', '/whatever/2.html'), ('blue', '')]
(注:你给出的预期结果漏了最后一个('blue', ''),实际会包含所有<td>的处理结果)
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

