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

21 投票
4 回答
27456 浏览
提问于 2025-04-16 17:13

我现在正在使用一个循环,处理我想要的所有行:

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

到目前为止,我已经得到了我的信息,但是

<br />

这些标签搞得我的输出很乱。

有没有什么简单的方法可以把它们去掉?

4 个回答

3

在开头用空格替换标签

Beautiful Soup 也可以在 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 标签替换成一个空格

19

如果你想把 <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
25

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定规则,让它知道什么时候该做什么。比如,你可以设定一个条件,如果温度超过30度,就提醒用户天气很热。

这个过程通常涉及到“条件语句”,它们帮助程序判断情况并做出相应的反应。简单来说,条件语句就像是一个十字路口,程序在这里需要决定走哪条路。

在很多编程语言中,条件语句的基本结构是这样的:如果某个条件为真(比如温度大于30度),那么就执行某个操作(比如显示“天气很热”的提示)。如果条件不成立,程序可以选择执行其他操作,或者什么都不做。

通过使用条件语句,我们可以让程序变得更加智能,能够根据不同的情况做出不同的反应。这就像是给程序加上了“思考”的能力,让它能够根据环境变化来调整自己的行为。

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

撰写回答