问题定义
我在使用BeautifulSoup模块(bs4)时遇到了一些问题。我需要使用get_text()函数解析一些CSS类(findAll())字符串并解开(或者你可以说从汤中删除所有标签),但是有一些误解点。我想做汤?
page = urllib.urlopen("http://www.example.com/")
soup = BeautifulSoup(page.read())
data = soup.findAll("a", { "class": "example_class" }
和汤显示指定网址的html代码。
<a href="/en/link/sth.asp?id=4786" class="example_class">This is the data which I want to access and shows only.
以后我想将数据变量转换为这是我想要访问并仅显示的数据。表单。后来,我的IDE说您不使用
访问数据data.get_text()
以这种方式。因为 soup 实例有一些功能,但数据没有。然后,我预先设定了另一个输入来自数据的汤,但有趣的是,我收到了如下错误。
another_soup = soup.getText(data)
错误
使用BeautifulSoup
时出错File "/Library/Python/2.7/site-packages/BeautifulSoup.py", line 586, in getText
return separator.join(strings)
AttributeError: 'ResultSet' object has no attribute 'join'
个人意见
我认为我的问题与使用BeautifulSoup的汤实例的错误使用或访问有关。你为汤实例调用两个函数有什么建议?使用相同的实例正确调用两次或创建不同的实例(我在上面做过)
在我提出此问题之前找到的相关问题
Python beatutiful soup 'ResultSet' object has no attribute 'get'
Python/BeautifulSoup - how to remove all tags from an element?
答案 0 :(得分:1)
findAll()
会返回list
个BeautifulSoup.Tag
个对象。您必须遍历此列表并在每个项目上调用get_text()
函数以删除标记。
page = urllib.urlopen("http://www.example.com/")
soup = BeautifulSoup(page)
data = soup.findAll("a", { "class": "example_class" }
data = [link.get_text() for link in data]