在python中使用BeautifulSoup4过滤<br/>标签

时间:2017-04-30 22:30:45

标签: python html parsing beautifulsoup

我有一个网站,其中有一个表格,其中包含td个数字:

...
<td class="click"><span class="content">VALUE | KEY<br />2020-02-02</span></td>
...

我正在使用BeautifulSoup来阅读其内容,目前打印为:VALUE | KEY2020-02-02

实现此目的的代码如下:

    for tr in soup.find_all('tr'):
        cols = []
        for td in tr.find_all('td'):
            td_text = td.get_text()
            if len(td_text):
                cols.append(td_text)
    temp.append(cols)

最终,我想要实现的是能够打印出来:VALUE|KEY|2020-02-02 - 换句话说,将<br />代码替换为|,这样我就可以保留{ {1}},VALUEKEY分开。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

由于您的目标是使用br替换|代码,因此您可以执行以下操作:

for br_tag in soup.findAll('br'):
    br_tag.replace_with('|')

答案 1 :(得分:0)

您正在选择<td>元素,然后调用get_text()函数,该函数返回内部的所有可打印文本(剥离范围)。相反,您可以选择<span>元素,获取HTML字符串表示(通过在元素上调用str(),然后在<br/>上拆分),如下所示:

for tr in soup.find_all('tr'):
    cols = []
    for td in tr.find_all('td'):
        span_html = str(td.find_all('span')).split('<br />')