假设有一些变量片段html代码
<p>
<span class="code"> string 1 </ span>
<span class="code"> string 2 </ span>
<span class="code"> string 3 </ span>
</ p>
<p>
<span class="any"> Some text </ span>
</ p>
我需要修改所有标签的内容,使用类代码<span>
通过某些函数跳过内容,例如foo
,它返回修改后的标记<span>
的内容。最终,我应该得到一个新的html文档:
<p>
<span class="code"> modify string 1 </ span>
<span class="code"> modify string 2 </ span>
<span class="code"> modify string 3 </ span>
</ p>
<p>
<span class="any"> Some text </ span>
</ p>
我被建议使用python库 BeautifulSoup4 可以轻松搜索特定的html节点。如何修改内容<span class="code">
并将新版本另存为新文件?我想发现你需要使用soup.find_all ('span', class = re.compile ("code"))
,只有这个函数返回一个样本对象的list
(副本),修改它不会改变汤的内容。我该如何解决这个问题?
答案 0 :(得分:3)
</ span>
是无效的HTML,即使是网络浏览器的宽松解析器也无法正确解析它。
修复HTML后,您可以使用.replaceWith()
:
from bs4 import BeautifulSoup
soup = BeautifulSoup('''
<p>
<span class="code"> string 1 </span>
<span class="code"> string 2 </span>
<span class="code"> string 3 </span>
</p>
<p>
<span class="any"> Some text </span>
</p>
''', 'html5lib')
for span in soup.find_all('span', class_='code'):
span.string.replaceWith('modified ' + span.string)