BeautifulSoup报”AttributeError: ‘NavigableString’ object has no attribute ‘get’ “异常的原因以及解决办法

  • Post category:Python

问题描述:

在使用BeautifulSoup库时,可能会出现以下错误:

AttributeError: ‘NavigableString’ object has no attribute ‘get’

这个错误的出现通常是由于我们将一个字符串类型的数据作为参数传入了BeautifulSoup对象,导致BeautifulSoup无法解析该参数,从而发生了异常。

解决办法:

要解决这个问题,需要先确定错误出现的位置,从哪个具体的部分引起的这个错误。

如果是因为将一个字符串类型的数据作为参数传入了BeautifulSoup对象,那么我们需要将其转化为HTML或XML格式,再传入BeautifulSoup进行解析。

可以使用内置的python库html.parser,例如:

from bs4 import BeautifulSoup
import html.parser

#比如我们有一个字符串
html_string = "<html><head><title>test</title></head><body><p>Hello World!</p></body></html>"

# 首先将字符串转化为HTML格式
html_doc = html.parser.HTMLParser().unescape(html_string)

# 然后将转化后的HTML字符串作为参数传入Soup()
soup = BeautifulSoup(html_doc, 'html.parser')

在这个例子中,我们将一个字符串类型的html文档先使用unescape()函数转化为HTML格式,再作为参数传入BeautifulSoup对象,就可以成功解析该HTML文档。

另外需要注意的是,如果出现的错误不是由于将字符串类型的数据传入所导致的,那么需要检查代码中其他部分是否有问题,例如是否使用了错误的语法或参数等。

综上所述,为了解决BeautifulSoup报”AttributeError: ‘NavigableString’ object has no attribute ‘get’ “的错误,我们需要先确定错误来源,如果是字符串类型数据导致的,就需要将其转化为HTML或XML格式,再传入BeautifulSoup对象进行解析。如果错误不是由于字符串类型的数据导致的,需要检查代码中其他部分是否有问题。