2008-10-21 12 views
6

kullanarak bir HTML 'DataCell' metin alırım. Doğru hücreleri almak için kodlanmış kodum var. Şimdi 'hücrenin' gerçek içeriğini almak için mücadele ediyorum: Buradanasıl HTML dosyalarından bazı verileri çıkarmaz çalışıyorlar BeautifulSoup

benim htm kelepir olduğunu [0] [10] Bu bir liste olduğunu

[<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">  
    </font></font></font>] 

Not .contents headerRows

Python [] öğesinden.

Ben Üretilen değer Elmalar ihtiyaç ama bunu almak mümkün değil.

herhangi bir öneriniz Bu cevap benim sonsuz minnettarlığımı


Teşekkür kazanmak istiyorum bunları açıklayacak iyi bir kitap üzerinde

Öneriler mutluluk duyacağız. Ancak-daha genel bir cevap yok. Ne benim cep cesur bir niteliği yoksa

öyle demek olur:

[<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">  
    </font></font></font>] 

Elmalar G/okuma belgeleri anlamak ve öğrenmeye çalışıyorum

Üretilen senin yanıtı gerçekten bu yardım takdir

yardımcı olacaktır. bu cevaplar hakkında en iyi şey, ben BeautifulSoup belgelerinden bunu mümkün olmuştur sonra onlardan genellemek çok daha kolay olmasıdır. Ben öğrenme piton zevk alıyorum ve gücünü-BeautifulSoup bir örnektir de amzed yaparken arabayı Fortran çağda program öğrendim ve. Belgelerin bir bütününü yapmak benim için zor.

Alkış

cevap

3
headerRows[0][10].contents[0].find('b').string 
: Bu yöntemlerden biri şudur
5

BeautifulSoup documentation ihtiyacınız olan her şeyi kapsamalıdır - bu kullanmak istediğiniz gibi görünüyor, bu durumda findNext:

headerRows[0][10].findNext('b').string 

<b> etiketi dayanmaz bir daha genel bir çözüm olur

>>> s = BeautifulSoup(u'<p>Test 1 <span>More</span> Test 2</p>') 
>>> u''.join([s.string for s in s.findAll(text=True)]) 
u'Test 1 More Test 2' 
: Eğer NavigableString nesneler için sadece arama yapmanızı sağlar findAll için argüman, kullanmaktır
0

Ben bana mutlaka yapısına güvenmek istemiyorum unsurların bir grup içindeki metne yardımcı yöntemlerin bir grup ile tüm güzel Çorbası sınıfları uzatmak bir temel sınıf var.

def clean(self, val): 
    if type(val) is not StringType: val = str(val) 
    val = re.sub(r'<.*?>', '', s) #remove tags 
    val = re.sub("\s+" , " ", val) #collapse internal whitespace 
    return val.strip() #remove leading & trailing whitespace