2015-08-18 21 views
7

kullanarak bir parçacık sınıfı ile bir div silme soup nesnesinden belirli div silmek istiyorum.
python 2.7 ve bs4 kullanıyorum.BeautifulSoup

Belgelere göre div.decompose()'u kullanabiliriz.

Ancak, div tüm silecektir. Belirli bir sınıfla div'u nasıl silebilirim?

cevap

11

Tabii, her zamanki gibi ilgi sadece select, find veya find_alldiv ler can ve ardından bu bölümlerde; decompose() arayın. Sınıfın sidebar ile tüm div'leri kaldırmak istiyorsanız

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

Belirli bir id ile bir div kaldırmak isterseniz, main-content demek, sen ile yapabilirsiniz o

Örneğin, yapabileceğin

soup.find('div', id="main-content").decompose() 
0
from BeautifulSoup import BeautifulSoup 
    >>> soup = BeautifulSoup('<body><div>1</div><div class="comment"><strong>2</strong></div></body>') 
    >>> for div in soup.findAll('div', 'comment'): 
    ... div.extract() 
    ... 
    <div class="comment"><strong>2</strong></div> 
    >>> soup 
    <body><div>1</div></body> 
+0

özü işlevi doesnt orijinal çorbadan div temizlenmesine yardımcı olur bana bildirin. –

+0

hv yukarıda kod çalıştı? – 3ppps

4

Bu size yardımcı olacaktır:

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 

Çıktı:

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

o

+0

yup. işe yaradı. –