TypeError:' ResultSet' object不可调用 - 使用BeautifulSoup的Python

时间:2018-03-02 18:52:42

标签: python html beautifulsoup

这里是python的新手,并且在尝试设置一些代码来从网页列表中删除数据时仍然遇到错误。

其中一个页面的链接是 - https://rspo.org/members/2.htm 我正在尝试抓住那里的信息,如会员编号','类别','部门'国家'等等将它全部导出到电子表格中。

代码:

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import requests

pages = []

for i in range(1, 10):
    url = 'https://rspo.org/members/' + str(i)
    pages.append(url)


for item in pages:
    page = requests.get(item)
    soup = soup(page.text, 'html.parser')
    member = soup.find_all("span", {"class":"current"})

我收到以下错误:

  

追踪(最近一次呼叫最后一次):

     

文件"",第3行,in           汤=汤(page.text,' html.parser')

     

TypeError:' ResultSet'对象不可调用

不确定我为什么会收到此错误。我试着查看Stack Overflow上的其他页面,但似乎没有任何类似的错误与我上面的那个相同。

1 个答案:

答案 0 :(得分:4)

问题是您有名称冲突,因为您以多种方式使用相同的名称。因此,您的soup设置为BeautifulSoup汤对象,但随后会重新用作同一个对象。

请改为尝试:

from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests

pages = []

for i in range(1, 10):
    url = 'https://rspo.org/members/' + str(i)
    pages.append(url)


for item in pages:
    page = requests.get(item)
    soup = BeautifulSoup(page.text, 'html.parser')
    member = soup.find_all("span", {"class":"current"})

请注意,我刚刚从BeautifulSoup删除了别名。我采用这种方法的原因很简单。 Python中的标准约定是类应该是正确的情况。 I.e ClassOneBeautifulSoup。类的实例应该是小写的,即classsoup。这有助于避免名称冲突,但它也使您的代码更直观。一旦你学会了这一点,就可以更容易地阅读代码并编写干净的代码。