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

  • Post category:Python
  1. 错误原因:

BeautifulSoup 是一个用于解析HTML和XML文档的Python库。在使用BeautifulSoup解析HTML文档时,通常是先找到需要的标签,然后再进一步获取该标签下的具体内容。但是,有时会出现如下报错信息:

AttributeError: ‘ResultSet’ object has no attribute ‘strip’

这个错误的原因是,该错误信息所在的代码中尝试对一个ResultSet对象执行了类似于字符串类型的操作(strip等),而ResultSet对象并没有此属性,因此会报错。

  1. 解决办法:

通常情况下,这个错误可以通过以下两种方式解决:

方法一:检查标签路径是否正确

可能是因为标签定位出现问题,找到的不是期望的标签导致的。可以通过打印出找到的标签来检查路径是否正确。

例如,执行以下代码:

from bs4 import BeautifulSoup
html = """
<html>
  <body>
    <div id="message">
      <p>Hello, World!</p>
    </div>
  </body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
message = soup.find("div", {"id": "message"})
striped = message.string.strip()

如果上述代码出现了错误”AttributeError: ‘ResultSet’ object has no attribute ‘strip'”,那么就需要检查第5行的message对象是否正确的定位了div标签。

方法二:使用.text代替.string

可以使用text代替string来获取标签下的文本内容,例如:

from bs4 import BeautifulSoup
html = """
<html>
  <body>
    <div id="message">
      <p>Hello, World!</p>
    </div>
  </body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')
message = soup.find("div", {"id": "message"})
striped = message.text.strip()

通过上述两种方法中的一种,可以解决报错”AttributeError: ‘ResultSet’ object has no attribute ‘strip'”的问题。