使用Python / bs4从论坛中删除HTML标签

时间:2016-03-18 00:28:56

标签: python beautifulsoup

我是(非常)新的Python用户,并决定我的第一部作品是从论坛中获取一些歌词并根据词频进行排序。我显然还没有得到频率部分,但以下是不能用于获取我想要的字符串值的代码,导致“AttributeError:'ResultSet'对象没有属性'getText'”:

from bs4 import BeautifulSoup
import urllib.request

url = 'http://www.thefewgoodmen.com/thefgmforum/threads/gdr-marching-songs-section-b.14998'
wp = urllib.request.urlopen(url)
soup = BeautifulSoup(wp.read())
message = soup.findAll("div", {"class": "messageContent"})
words = message.getText()
print(words)

如果我更改代码以使getText()对象运行soup

words = soup.getText()

当然,我会在整个网页上获取所有字符串值,而不是仅限于messageContent类的字符串值。

因此,我的问题有两方面: 1)是否有一种简单的方法可以将标签剥离限制在仅预期的部分? 2)我不明白有什么简单的事情我不能getText()message对象进行操作?

感谢。

1 个答案:

答案 0 :(得分:3)

在这种情况下,message是一个BeautifulSoup ResultSet,它是BeautifulSoup Tag的列表。您需要做的是在getText的每个元素上调用message,如此,

words = [item.getText() for item in message]

同样,如果你只对一个Tag感兴趣(让我们说第一个是为了争论的话),你可以用它来获取它的内容,

words = message[0].getText()