2011-09-08 13 views
4

こんにちは私は美しいスープを使用してHTMLテーブルを解析しようとしています。 の表は、このようなものになります動作するようには思えdoes notの美しいスープとテーブル

html = file("whatever.html") 
soup = BeautifulSoup(html) 
t = soup.find(id='table') 
dat = [ map(str, row.findAll("td")) for row in t.findAll("tr") ] 

、任意のヘルプ:

<table width=100% border=1 cellpadding=0 cellspacing=0 bgcolor=#e0e0cc> 
<tr> 
    <td width=12% height=1 align=center valign=middle bgcolor=#e0e0cc bordercolorlight=#000000 bordercolordark=white> <b><font face="Verdana" size=1><a href="http://www.dailystocks.com/" alt="DailyStocks.com" title="Home">Home</a></font></b></td> 
</tr> 
</table> 
<table width="100%" border="0" cellpadding="1" cellspacing="1"> 
    <tr class="odd"><td class="left"><a href="whatever">ABX</a></td><td class="left">Barrick Gold Corp.</td><td>55.95</td><td>55.18</td><td class="up">+0.70</td><td>11040601</td><td>70.28%</td><td><center>&nbsp;<a href="whatever" class="bcQLink">&nbsp;Q&nbsp;</a>&nbsp;<a href="chart.asp?sym=ABX&code=XDAILY" class="bcQLink">&nbsp;C&nbsp;</a>&nbsp;<a href="texpert.asp?sym=ABX&code=XDAILY" class="bcQLink">&nbsp;O&nbsp;</a>&nbsp;</center></td></tr> 
</table> 

私は2番目のテーブルから情報を取得したいと思い、これまでのところ、私はこのコードを試してみましたが ありがとう

答えて

8

最初の問題は次のステートメントです。 "t = soup.find(id = 'table')"テーブルのidには何もありません。私はあなたが「t = soup.find( 'table')」と言っていると思います。これはテーブルを見つけます。残念ながら、それは最初のテーブルを見つけるだけです。

「t = soup.findAll(table)[1]」を実行できますが、これは非常に脆弱です。

私は、次のような何かを示唆している:DAT変数を結果

html = file("whatever.html") 
soup = BeautifulSoup(html) 
rows = soup.findAll("tr", {'class': ['odd', 'even']}) 
dat = [] 
for row in rows: 
    dat.append(map(str, row.findAll('td')) 

は次のとおりです。

[['<td class="left"><a href="whatever">ABX</a></td>', '<td class="left">Barrick Gold Corp.</td>', '<td>55.95</td>', '<td>55.18</td>', '<td class="up">+0.70</td>', '<td>11040601</td>', '<td>70.28%</td>', '<td><center>&nbsp;<a href="whatever" class="bcQLink">&nbsp;Q&nbsp;</a>&nbsp;<a href="chart.asp?sym=ABX&amp;code=XDAILY" class="bcQLink">&nbsp;C&nbsp;</a>&nbsp;<a href="texpert.asp?sym=ABX&amp;code=XDAILY" class="bcQLink">&nbsp;O&nbsp;</a>&nbsp;</center></td>']] 

編集:間違った配列インデックス

関連する問題