web-dev-qa-db-fra.com

Supprimer un div avec une classe particulière en utilisant BeautifulSoup

Je souhaite supprimer le div spécifique de soup objet.
J'utilise python 2.7 Et bs4.

Selon la documentation, nous pouvons utiliser div.decompose().

Mais cela supprimerait tous les div. Comment puis-je supprimer un div avec une classe spécifique?

21
Riken Shah

Bien sûr, vous pouvez simplement select , find , ou find_all le divs d'intérêt de la manière habituelle, puis appelez decompose() sur ces divs.

Par exemple, si vous souhaitez supprimer toutes les divs avec la classe sidebar, vous pouvez le faire avec

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

Si vous souhaitez supprimer un div avec un id spécifique, par exemple main-content, Vous pouvez le faire avec

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

Cela vous aidera à:

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

Production:

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

Faites-moi savoir si cela aide

8
Vineet Kumar Doshi

J'espère que cela vous aidera:

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