从已解析的Beautiful Soup列表中删除<br/>标签?

时间:2011-05-08 03:19:00

标签: python beautifulsoup html-parsing

我目前正在进入一个包含我想要的所有行的for循环:

page = urllib2.urlopen(pageurl)
soup = BeautifulSoup(page)
tables = soup.find("td", "bodyTd")
for row in tables.findAll('tr'):

此时,我有我的信息,但是

<br />

标签破坏了我的输出。

删除这些内容的最简洁方法是什么?

4 个答案:

答案 0 :(得分:18)

如果您想将<br />翻译成换行符,请执行以下操作:

def text_with_newlines(elem):
    text = ''
    for e in elem.recursiveChildGenerator():
        if isinstance(e, basestring):
            text += e.strip()
        elif e.name == 'br':
            text += '\n'
    return text

答案 1 :(得分:15)

for e in soup.findAll('br'):
    e.extract()

答案 2 :(得分:3)

在开头用空格替换标签 美丽的汤也接受urlopen对象上的.read(),所以这应该工作 - - -

page = urllib2.urlopen(pageurl)
page_text=page.read()
new_text=re.sub('</br>',' ',page_text)
soup = BeautifulSoup(new_text)
tables = soup.find("td", "bodyTd")
for row in tables.findAll('tr'):
.....

re.sub用空格替换br标签

答案 3 :(得分:1)

也许some_string.replace('<br />','\n')用换行符替换中断。

>>> print 'Some data<br />More data<br />'.replace('<br />','\n')
Some data
More data

您可能需要查看html5liblxml,这两者都非常适合解析html。 lxml非常快,而html5lib的设计非常强大。