找到并取代Beautifulsoup

时间:2017-07-29 22:04:21

标签: python html beautifulsoup

我有一个像这样的HTML:

<hmtl>
    <body>
        <h1>heading 1</h1>
        <p>blah</p>
        <h2>heading 2</h2>
        <p>blah</p>
        <h2>heading 3</h2>
        <p>blah</p>
    </body>
</html>

我希望能够返回美化文本,而不是HTML。

我认为唯一的方法是找到并用标题替换每个标题,再添加换行符。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您需要,可以在每个标题后插入<br/>标记,以增加标题和内容之间的空间:

import re
for header in soup.find_all(name=re.compile(r'^h\d')):
    br=soup.new_tag('br')
    header.insert_after(br)

插入之前:

from bs4 import BeautifulSoup
soup = BeautifulSoup("""<hmtl>
    <body>
        <h1>heading 1</h1>
        <p>blah</p>
        <h2>heading 2</h2>
        <p>blah</p>
        <h2>heading 3</h2>
        <p>blah</p>
    </body>
</html>""", "html.parser")

from IPython.display import display, HTML
chart = HTML(str(soup))
display(chart)

enter image description here

插入<br/>代码:

for header in soup.find_all(name=re.compile(r'^h\d')):
    br=soup.new_tag('br')
    header.insert_after(br)

chart = HTML(str(soup))
display(chart)

enter image description here