web-dev-qa-db-ja.com

BeautifulSoupを使用して特定のクラスのdivを削除する

divオブジェクトから特定のsoupを削除したい。
_python 2.7_および_bs4_を使用しています。

ドキュメントによると、div.decompose()を使用できます。

しかし、それはすべてのdivを削除します。特定のクラスを持つdivを削除するにはどうすればよいですか?

21
Riken Shah

もちろん、 selectfind 、または _find_all_divsを通常の方法で使用し、それらのdivで decompose() を呼び出します。

たとえば、クラスsidebarを持つすべてのdivを削除する場合は、次のようにします。

_# replace with `soup.findAll` if you are using BeautifulSoup3
for div in soup.find_all("div", {'class':'sidebar'}): 
    div.decompose()
_

特定のid、たとえば_main-content_でdivを削除する場合は、次のようにします。

_soup.find('div', id="main-content").decompose()
_
37
lemonhead

これはあなたを助けます:

from bs4 import BeautifulSoup

markup = '<a>This is not div <div class="1">This is div 1</div><div class="2">This is div 2</div></a>'
soup = BeautifulSoup(markup,"html.parser")
a_tag = soup

soup.find('div',class_='2').decompose()

print a_tag

出力:

<a>This is not div <div class="1">This is div 1</div></a>

役立つかどうか教えてください

8

それが役立つことを願っています:

from bs4 import BeautifulSoup
from bs4.element import Tag

markup = '<a>This is not div <div class="1">This is div 1</div><div class="2">This is div 2</div></a>'
soup = BeautifulSoup(markup,"html.parser")

for tag in soup.select('div.1'):
  tag.decompose()

print(soup)
4
david euler