使用Beautiful Soup处理特定表格时出现NoneType错误
问题分析与解决
问题原因
section-PLANTS表格里并非所有<tr>行都包含<a>标签,当遍历到没有<a>的行时,r.find('a')会返回None,此时调用.contents[0]或.text自然会触发AttributeError。你之前执行print(r.find('a'))没发现问题,大概率是没遍历到那些不含<a>的行。
修复代码
在读取内容前先判断<a>标签是否存在:
plants_table = bs.find('table', id="section-PLANTS") for r in plants_table.find_all('tr'): link = r.find('a') if link: # 先确认标签存在 print(link.contents[0]) # 或者用print(link.get_text()),效果一致
补充说明
也可以用find_all('a')结合长度判断,或者用try-except捕获异常,但先判断对象是否为None是最直接高效的方式,能避免无意义的异常抛出。
内容的提问来源于stack exchange,提问作者Oluchi A
相关产品推荐
相关产品推荐

