2016-11-05 12 views
0

で次のH2に到達するまで、私は、Beautifulsoupを使用してHTMLを通過しながら、私の目標は、ある削除H2は、次のHTMLを考えるとbeautifulsoup

ignore_list = ['example','lalala'] 

<h2 id="example">cool stuff</h2> <ul> <li>hi</li> </ul> <div> <h2 id="cool"><h2> <ul><li>zz</li> </ul> </div> 

と、次のリストを私のリスト(ignore_list)にあるIDを持つh2を見つける私は別のh2が見つかるまで、その下のすべてのulとlisを削除する必要があります。私は次に、次のh2が私の無視リストにあるかどうかをチェックし、そうであれば、次のh2に達するまですべてのulとlisを削除する(またはh2が残っていなければ、現在のulとlisを削除して停止する)。

どのようにプロセスが進行しているか:DOM内のすべてのh2sを上から下に読み込みます。それらのIDがignore_listにある場合、NEXT h2に達するまでh2の下のulとliをすべて削除します。 h2がない場合は、ulとLIを削除してから停止します。

ここ

は、私が一緒に仕事しようとしていますフルHMTLです:http://pastebin.com/Z3ev9c8N

私はPythonでこれを実現する方法を「See_also」 後、すべてのULおよびLISを削除しようとしていますか?

答えて

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  
したくないコンテンツを削除します
関連する問題