2013-02-04 2 views
4

У меня есть этот HTML-таблица, и мне нужен некоторые данные из него:BeautifulSoup HTML извлечение табличные данные

<table id="curFullTable" class="tablesorter" style="width:728px;margin-left:auto;margin-right:auto;"> 
    <tr> 
     <td>Euro</td> 
     <td align="center">EUR</td> 
     <td align="center">€</td> 
     <td align="center">1</td> 
     <td align="center">110.9416</td> 
     <td align="center">111.2754</td> 
     <td align="center">111.6092</td> 
     </tr> 
    <tr> 
     <td>Australian dollar</td> 
     <td align="center">AUD</td> 
     <td align="center">$</td> 
     <td align="center">1</td> 
     <td align="center">84.9671</td> 
     <td align="center">85.2228</td> 
     <td align="center">85.4785</td> 
    </tr> 
    <tr> 
     <td>Canadian dollar</td> 
     <td align="center">CAD</td> 
     <td align="center">$</td> 
     <td align="center">1</td> 
     <td align="center">81.6167</td> 
     <td align="center">81.8623</td> 
     <td align="center">82.1079</td> 
    </tr> 
</table> 

С помощью этого кода:

tableData = htmlText.find("table", attrs={"class":"tablesorter"}) 
rows = tableData.findAll('tr') 

я получаю все строки таблицы и ячейку таблицы в один список. До сих пор мне удалось извлечь один на один название валюты, но мне действительно нужен список названий валют, как этот

currencies = ['Euro','Australian dollar','Canadian dollar'] 

Что бы путь для достижения этой цели? Позже мне также понадобится извлечь данные из последнего элемента TD каждого элемента TR.

ответ

5
In [70]: from bs4 import BeautifulSoup 

In [71]: soup = BeautifulSoup(html) 

In [72]: [tr.find('td').text for tr in soup.findAll('tr')] 
Out[72]: [u'Euro', u'Australian dollar', u'Canadian dollar'] 

для последних пунктов:

In [73]: [tr.findAll('td')[-1].text for tr in soup.findAll('tr')] 
Out[73]: [u'111.6092', u'85.4785', u'82.1079'] 
+0

Попробую его, как только смогу, и пометить его как «ответ». Спасибо. – ivica

+0

Я получаю синтаксическую ошибку с этим кодом?! – user1988632

Смежные вопросы