python - BeautifulSoup: AttributeError: 'NavigableString' 对象没有属性 'name'

标签 python beautifulsoup

你知道为什么 BeautifulSoup 教程中的第一个例子 http://www.crummy.com/software/BeautifulSoup/documentation.html#QuickStart给出 AttributeError: 'NavigableString' object has no attribute 'name'?根据this answer HTML 中的空格字符会导致问题。我尝试使用几页的来源,并且 1 工作其他人给出了同样的错误(我删除了空格)。你能解释一下“name”指的是什么以及为什么会发生这个错误吗?谢谢。

最佳答案

name如果对象是 Tag,将引用标签的名称对象(即:<html> name = "html")

如果节点之间的标记中有空格,BeautifulSoup 会将它们变成 NavigableString的。所以如果你使用 contents 的索引要获取节点,您可能会获取 NavigableString而不是下一个 Tag .

为避免这种情况,请查询您要查找的节点:Searching the Parse Tree

或者如果您知道您想要的下一个标签的名称,您可以使用该名称作为属性,它将返回第一个 Tag。用那个名字或None如果不存在具有该名称的 child :Using Tag Names as Members

如果你想使用 contents你必须检查你正在使用的对象。您得到的错误只是意味着您正在尝试访问 name 属性,因为代码假定它是 Tag

关于python - BeautifulSoup: AttributeError: 'NavigableString' 对象没有属性 'name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591535/

相关文章:

python - BeautifulSoup img src 获取 base64 而不是实际链接

python - Matplotlib plot_surface 透明度人工制品

python - 尝试将数字元组转换为字符串

python - 如何解决列表索引超出范围错误?

python - 使用 Python 的 BeautifulSoup 不断返回 null,即使元素存在

python - 在 Windows 中使用 BeautifulSoup4、Chardet 和 Python 3.3 解析页面时出错

python - 如何在 tensorflow 中进行稀疏张量和稠密张量之间的元素乘法?

python - 将函数应用于元组数组

python - Django 没有额外的表?

python-3.x - 为什么这个提取在示例上工作正常,但在真实 url 上却不行?