2010-12-12 24 views
5

Python'un Güzel Çorbası'nın, bazı metinler haricindeki tüm html etiketlerini metinden ayırmak için nasıl kullanılacağını gösteren örnek bir kod var mı? gibiBir dizeden html etiketlerini şeritlemek için Güzel Çorba'yı Kullanma

<a></a> 
<b></b> 
<i></i> 

Ve ayrıca şeyler:

ben hariç tüm javascript ve html etiketleri herşeyi şerit istediğiniz yardımcı olmak için

<a onclick=""></a> 

teşekkür - Ben internette çok bulamadık Bu amaç.

cevap

8
import BeautifulSoup 

doc = '''<html><head><title>Page title</title></head><body><p id="firstpara" align="center">This is <i>paragraph</i> <a onclick="">one</a>.<p id="secondpara" align="blah">This is <i>paragraph</i> <b>two</b>.</html>''' 
soup = BeautifulSoup.BeautifulSoup(doc) 

for tag in soup.recursiveChildGenerator(): 
    if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'): 
     print(tag) 

sadece metin içeriğini istiyorsanız, print(tag.string) için print(tag) değişebilir

<i>paragraph</i> 
<a onclick="">one</a> 
<i>paragraph</i> 
<b>two</b> 

verir. Eğer a etiketinden onclick="" gibi bir öznitelik kaldırmak istiyorsanız

, bunu yapabilirdi:

if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'): 
    if tag.name=='a': 
     del tag['onclick'] 
    print(tag) 
+0

teşekkür ederiz - herhangi bir şekilde onclick = "" – ensnare

+0

eklenti 'tag.attrs = [kaldırmak için ] 'tüm özellikleri kaldırmak için yazdırmadan önce. Daha fazla kontrole ihtiyacınız varsa, tag.attrs, ihtiyacınız olan şekilde oynayabileceğiniz (isim, değer) çiftlerin bir listesidir. – Spacedman

+0

Hey bu gerçekten yardımcı oldu, çok teşekkür ederim. – ensnare

İlgili konular