python - BeautifulSoup Replace_with 用于非标准标签

标签 python html beautifulsoup

我正在尝试编写一个解析器,它将采用 HTML 并将其转换/输出为 Wiki 语法( <b> = '''<i> = '' 等)。

到目前为止,BeautifulSoup 似乎只能替换标签内的内容,所以 <b>变成<'''>而不是''' 。我可以使用 re.sub() 来交换这些标签,但是由于 BS 将文档转换为“Python 对象的复杂树”,我不知道如何交换这些标签并将它们重新插入到整体中文档。

有人有想法吗?

最佳答案

我很确定已经有工具可以为您做到这一点,但如果您询问如何使用 BeautifulSoup 做到这一点,您可以使用 replace_with(),但您需要保留元素的文本。天真的和简单的例子:

from bs4 import BeautifulSoup

data = """
<div>
    <b>test1</b>
    <i>test2</i>
</div>
"""

soup = BeautifulSoup(data, "html.parser")

for b in soup.find_all("b"):
    b.replace_with("'''%s'''" % b.text)

for i in soup.find_all("i"):
    i.replace_with("''%s''" % i.text)

print(soup.prettify())

打印:

<div>
 '''test1'''
 ''test2''
</div>

关于python - BeautifulSoup Replace_with 用于非标准标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758737/

相关文章:

html - FlexLayout Angular 并在开始和结束时在一行中对齐元素

python - 当数据表不显示在页面源中时如何抓取

python - 在MySQL上执行插入,没有错误但也没有插入

python - 字符串与 python 中的正则表达式匹配模式

javascript - 在方法中添加 HTML Javascript 事件处理

Javascript 打印函数 : Remove space from preview page

Python JSONDecoder自定义翻译null类型

python - 在 python 中绘制带有邻接矩阵和坐标列表的连接图

python-3.x - Python3 的 bs4( BeautifulSoup )在 visual studio 中不起作用

python - 为什么当我使用 pip install beautifulsoup 时只有 egg-info 而没有实际的模块?