2012-07-23 15 views
5

Mam następujące HTML i próbuję dowiedzieć się, jak dokładnie mogę powiedzieć BeautifulSoup, aby wyodrębnić td po pewnym elemencie HTML. W tym przypadku chcę uzyskać dane <td> poBeautifulSoup: Jak wyodrębnić dane po określonym znaczniku html

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

Jest cała 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

Czy to wszystko z HTML? A może jest w większym pliku z wieloma innymi s i s? Czy jest zagwarantowany tylko jeden element "Color Digest" w analizowanym html? –

+0

Nie jest to tylko fragment kodu HTML, więc chcę uzyskać mechanizm uzyskiwania elementu po określonym elemencie. Tak jak w XPath, możesz powiedzieć, że najpierw potrzebuję td po Color Digest –

Odpowiedz

4

Brzmi jak trzeba iteracyjne nad listy <td> i przestać kiedy już znalezieniu dane.

Przykład:

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