2012-04-14 25 views
6

De esta fuente html:Uso BeautifulSoup para extraer el texto antes de que el primer hijo etiqueta

<div class="category_link"> 
    Category: 
    <a href="/category/personal">Personal</a> 
</div> 

deseo para extraer el texto Category:

Aquí están mis intentos utilizando Python/BeautifulSoup (con salida como comentario - después del #)

parsed = BeautifulSoup(sample_html) 
parsed_div = parsed.findAll('div')[0] 
parsed_div.firstText() # <a href="/category/personal">Personal</a> 
parsed_div.first() # <a href="/category/personal">Personal</a> 
parsed_div.findAll()[0] # <a href="/category/personal">Personal</a> 

Espero que un "nodo de texto" esté disponible como el primer hijo. ¿Alguna sugerencia sobre cómo puedo resolver esto?

+1

'parsed_div.contents [0]' – Avaris

Respuesta

11

Estoy bastante seguro de que el siguiente debe hacer lo que quiera

parsed.find('a').previousSibling # or something like that 

que devolvería una instancia NavigableString que es más o menos la misma cosa como una instancia unicode, pero se puede llamar unicode en que para obtener un objeto Unicode .

Veré si puedo probar esto y hacerle saber.

EDITAR: Me acaba de confirmar que funciona:

>>> from BeautifulSoup import BeautifulSoup 
>>> soup = BeautifulSoup('<div class=a>Category: <a href="/">a link</a></div>') 
>>> soup.find('a') 
<a href="/">a link</a> 
>>> soup.find('a').previousSibling 
u'Category: ' 
>>> 
+0

impresionante! Trabajado como un encanto –

Cuestiones relacionadas