在BeautifulSoup中调用多个函数

时间:2016-01-30 20:53:56

标签: python python-2.7 beautifulsoup

问题定义

我在使用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?

1 个答案:

答案 0 :(得分:1)

findAll()会返回listBeautifulSoup.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]