我有一个包含某些标签的超文本标记语言文件,我需要以id="rule_1"
、id="rule_1.1"
、id="rule_1.2"
、id="rule_1.2.1"
等格式为每个标签添加ID号。例如,当前的超文本标记语言是:
<div style="styles">
<p class="classname">TEXT</p>
<p class="classname">TEXT</p>
<ul style="styles">
<li>
<p class="classname">TEXT</p>
</li>
<li>
<p class="classname">TEXT</p>
</li>
</ul>
</div>
我需要这个HTML看起来像这样:
<div style="styles" id="rule_1">
<p class="classname" id="rule_1.1">TEXT</p>
<p class="classname" id="rule_1.2">TEXT</p>
<ul style="styles" id="rule_1.3">
<li id="rule_1.3.1">
<p class="classname" id="rule_1.3.1.1">TEXT</p>
</li>
<li id="rule_1.3.2">
<p class="classname" id="rule_1.3.2.1">TEXT</p>
</li>
</ul>
</div>
我可以手动编写这些代码,但我希望使用现有的HTML解析器库。是否可以使用BeautifulSoup或其他模块?
我尝试了这样的东西:
from bs4 import BeautifulSoup as html_parser
with open('outputs/HTML/{}.html'.format(deal), 'r') as read_file:
html_source = read_file.read()
soup = html_parser(html_source, 'html.parser')
html_tags = soup.find_all(['div', 'p', 'span', 'ul', 'li'])
for each_tag in html_tags:
each_tag.attrs['id'] = html_tags.index(each_tag)
with open('outputs/HTML/{}-id.html'.format(deal), 'w') as save_file:
save_file.write(str(soup))
但这只是添加了id="1"
、id="2"
等。我怎么能让它像1
、1.1
、1.1.1
等等那样交错呢?
https://stackoverflow.com/questions/51660176
复制相似问题