考虑以下html:
<h2 id="example">cool stuff</h2> <ul> <li>hi</li> </ul> <div> <h2 id="cool"><h2> <ul><li>zz</li> </ul> </div>
以及以下列表:
ignore_list = ['example','lalala']
我的目标是,在使用Beautifulsoup浏览HTML时,我发现一个h2,其ID在我的列表中(ignore_list)我应该删除它下面的所有ul和lis,直到找到另一个h2。然后我会检查下一个h2是否在我的忽略列表中,如果是,删除所有的ul和lis直到我到达下一个h2(或者如果没有h2s,则删除当前的h2和lis并停止)。
我如何看待这个过程:你在DOM中从头到尾读取所有的h2。如果其中任何一个的id在ignore_list中,则删除h2下的所有ul和li,直到到达NEXT h2。如果没有h2,则删除ul和LI然后停止。
以下是我正在尝试使用的完整HMTL:http://pastebin.com/Z3ev9c8N
我试图删除所有的UL和lis&#34; See_also&#34; 我将如何在Python中实现这一目标?
答案 0 :(得分:0)
以下是我提出的解决方案。
try:
for element in body.find_all('h2'):
current_h2 = element.get_text()
current_h2 = current_h2.replace('[edit]','')
#print(current_h2)
if(current_h2 in ignore_list):
if(element.find_next_sibling('div') != None):
element.find_next_sibling('div').decompose()
if(element.find_next_sibling('ul') != None):
element.find_next_sibling('ul').decompose()
except(AttributeError, TypeError) as e:
continue