在BeautifulSoup中用另一种标签替换一种标签

Sim*_*ely 6 html python parsing beautifulsoup python-3.x

我有一组HTML文件.我希望逐个迭代它们,编辑特定类的标记.我想编辑的代码具有以下形式,使用以下类名:

<td class='thisIsMyClass' colspan=4>
  <a id='123' class='thisIsMyOtherClass' href='123'>Put me Elsewhere</a> 
Run Code Online (Sandbox Code Playgroud)

这可以在同一个文档中多次出现,使用不同的文本而不是"Put me Elsewhere",但总是使用相同的类.

我想将其更改为以下形式:

<font SIZE="3"  COLOR="#333333"  FACE="Verdana"  STYLE="background-color:#ffffff;font-weight: bold;">
  <h2>Put Me Elsewhere</h2>
</font>
Run Code Online (Sandbox Code Playgroud)
import os
for filename in os.listdir('dirname'):
 replace(filename)

def replace(filename):
 tags = soup.find_all(attrs={"thisIsMyClass"})
Run Code Online (Sandbox Code Playgroud)

不太确定在此之后去哪里或如何处理标签数组?任何帮助将非常感激.谢谢 :)

ale*_*cxe 5

更好,更漂亮的是使用占位符准备替换HTML字符串,找到td包含thisIsMyClass类的所有标记并用于.replace_with()替换每个:

from bs4 import BeautifulSoup

data = """
<table>
    <tr>
        <td class='thisIsMyClass' colspan=4>
          <a id='123' class='thisIsMyOtherClass' href='123'>Put me Elsewhere</a>
        </td>
    </tr>
</table>
"""

replacement = """
<font SIZE="3"  COLOR="#333333"  FACE="Verdana"  STYLE="background-color:#ffffff;font-weight: bold;">
  <h2>{text}</h2>
</font>
"""

soup = BeautifulSoup(data, 'html.parser')
for td in soup.select('td.thisIsMyClass'):
    td.replace_with(BeautifulSoup(replacement.format(text=td.a.text), 'html.parser'))

print soup.prettify()
Run Code Online (Sandbox Code Playgroud)

打印:

<table>
    <tr>
        <font color="#333333" face="Verdana" size="3" style="background-color:#ffffff;font-weight: bold;">
            <h2>
            Put me Elsewhere
            </h2>
        </font>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)