2012-11-02 1 views
24

ho sto cercando di analizzare una pagina web che assomiglia a questo con Python-> Beautiful Soup: enter image description hereBeautiful Soup trovare i bambini per la particolare div

Sto cercando di estrarre il contenuto del div td evidenziato. Attualmente posso ottenere tutte le div da

alltd = soup.findAll('td') 


for td in alltd: 
    print td 

ma sto cercando di restringere la portata di tale per cercare il TDS nella classe "tablebox" che ancora probabilmente torneremo 30+, ma è più gestibile un numero di 300 +.

Come posso estrarre il contenuto della td in evidenza evidenziata sopra?

risposta

42

È utile sapere che qualsiasi elemento trovato da BeautifulSoup all'interno di un elemento ha ancora lo stesso tipo di quell'elemento genitore - ovvero, è possibile chiamare vari metodi.

Quindi questo è il codice un po 'di lavoro per il tuo esempio:

soup = BeautifulSoup(html) 
divTag = soup.find_all("div", {"class": "tablebox"}): 

for tag in divTag: 
    tdTags = tag.find_all("td", {"class": "align-right"}) 
    for tag in tdTags: 
     print tag.text 

Questo stamperà tutto il testo di tutti i tag td con la classe di "align-destra" che hanno un div genitore con la classe di "tablebox".

+1

Nel ciclo principale, il tag è l'elemento 'div' non l'elemento zuppa, quindi penso che farebbe un errore, non è vero? Nell'elemento 'div', non ha il metodo chiamato 'find_all' – LKM