BeautifulSoup报”TypeError: ‘ResultSet’ object is not callable “异常的原因以及解决办法

  • Post category:Python

这个错误通常是由于尝试在BeautifulSoup结果集(ResultSet)中使用函数而导致的。这通常发生在我们使用findAll()或find()函数时,然后用括号()去调用结果集(RResultSet)时。

更具体地说,当我们有一个BeautifulSoup对象或Tag对象,然后我们使用findAll()或find()函数去查找我们想要的结果。这个函数将返回一个ResultSet或一个Tag对象,它里面包含我们的结果。如果我们在ResultSet后面加上括号(),就会导致此错误。因为ResultSet对象本身不是一个函数,不能被调用,只能被遍历。

解决此问题的方式是在代码中移除ResultSet对象后面的括号()。你只需要像遍历列表一样直接遍历ResultSet对象即可。以下是使用findAll()函数返回的ResultSet对象的正确用法:

from bs4 import BeautifulSoup
import requests

url = 'http://example.com/'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')

results = soup.findAll('div', {'class': 'result'})

for result in results:
    print(result.text)

这里我们通过在一个div的类别上,使用findAll()函数获取了一个包含所有结果的ResultSet对象。我们只需要遍历ResultSet对象,而不需要调用它作为一个函数。

在总结一下,如果你碰到”TypeError: ‘ResultSet’ object is not callable “报错,请检查代码中是否有ResultSet对象后面的多余括号()。如果有,请将其移除,即可解决此问题。