这里是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上的其他页面,但似乎没有任何类似的错误与我上面的那个相同。
答案 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 ClassOne
和BeautifulSoup
。类的实例应该是小写的,即class
和soup
。这有助于避免名称冲突,但它也使您的代码更直观。一旦你学会了这一点,就可以更容易地阅读代码并编写干净的代码。