2012-04-14 17 views
6

Da questa fonte html:Usa BeautifulSoup per estrarre il testo prima che il primo figlio tag

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

desidero estrarre il testo Category:

Qui sono i miei tentativi utilizzando Python/BeautifulSoup (con uscita come commento - dopo il #)

Mi aspetto che un "nodo di testo" sia disponibile come primo figlio. Qualche suggerimento su come posso risolvere questo?

+1

'parsed_div.contents [0]' – Avaris

risposta

11

Sono abbastanza sicuro il seguente dovrebbe fare quello che vuoi

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

Sarebbe tornare un'istanza NavigableString che è praticamente la stessa cosa come istanza unicode, ma si possono chiamare unicode da quello di ottenere un oggetto unicode .

Vedrò se posso verificarlo e farti sapere.

EDIT: Ho appena confermato che funziona:

>>> 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

Impressionante! Ha funzionato come un fascino –

Problemi correlati