2012-07-23 27 views
5

Tengo html siguiente y estoy tratando de averiguar cómo exactamente puedo decir a BeautifulSoup extraer td después de cierto elemento html. En este caso quiero obtener datos de <td> despuésBeautifulSoup: Cómo extraer datos después de la etiqueta html específica

<tr> 
<td> Color Digest </td> 
<td> 2,36,156,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td> 
</tr> 

Este es todo el código HTML

<html> 
<head> 
<body> 
<div align="center"> 
<table cellspacing="0" cellpadding="0" style="clear:both; width:100%;margin:0px; font-size:1pt;"> 
<br> 
<br> 
<table> 
<table> 
<tbody> 
<tr bgcolor="#AAAAAA"> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<tr> 
<td> Color Digest </td> 
<td> 2,36,156,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td> 
</tr> 
</tbody> 
</table> 
+1

¿Esto es todo de su HTML? ¿O está en un archivo más grande con muchos otros sy s? ¿Y se garantiza que solo habrá un elemento "Color Digest" en el html que está analizando? –

+0

No, esto es solo un fragmento del html, así que realmente quiero obtener el mecanismo para obtener el elemento después de cierto elemento. Como en XPath puedes decir que necesito primero td después de Color Digest –

Respuesta

4

Suena como que necesita para iterar sobre una lista de <td> y parar una vez que haya encontrado su datos.

Ejemplo:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup('<html><tr><td>X</td><td>Color Digest</td><td>THE DIGEST</td></tr></html>') 
for cell in soup.html.tr.findAll('td'): 
    if 'Color Digest' == cell.text: 
     print cell.nextSibling.text 
Cuestiones relacionadas