Python - Beautiful Soup - 删除一行代码

3
我开始学习beautifulsoup。我正在尝试从html脚本中删除包含</div>的代码行。 文档中大多数示例都是针对整个标签(开头和结尾)。是否可能仅修改标签的一部分?例如:
</div>
<div >Hello</div>
<div data-foo="value">foo!</div>

如何仅删除代码的第一行?
2个回答

3
你可以使用BeautifulSoup的 unwrap() 方法来指定无效标签,它只会删除那些没有开/闭标记对应的额外标签,同时保留其他标签:
soup = BeautifulSoup(html_doc, 'html.parser')

invalid_tags = ['</div>']

for tag in invalid_tags: 
    for match in soup.findAll(tag):
        match.unwrap()

print(soup)

结果:

<div>Hello</div>
<div data-foo="value">foo!</div>

“invalid_tags = ['<\div>']” 不应该是 “['</div>']” 吗? - aneroid
我不知道,但那也可以工作,并且可能是首选惯例,我会更新,谢谢。 - chickity china chinese chicken

1

您不需要做任何事情,它会自动修复。

from bs4 import BeautifulSoup

html_doc = '''</div> 
<div>World</div>
<div data-foo="value">foo!''' # also invalid, no closing

soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

输出

<div>World</div>
<div data-foo="value">foo!</div>

"

unwrap() 用于删除而不是修复标签。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接