1

HTMLスニペット:

<tr>
   <td class="faux_th">Unfinished Carport</td>
   <td>336</td>
   <td>0</td>
   <td>67</td>
</tr>
<tr class="alt">
   <td class="faux_th">Finished Encl Porch</td>
   <td>96</td>
   <td>0</td>
   <td>58</td>
</tr>
<tr>
   <td class="faux_th">Finished Open Porch</td>
   <td>60</td>
   <td>0</td>
   <td>18</td>
</tr>
<tr class="alt">
   <td class="faux_th">Base Area</td>
   <td>996</td>
   <td>996</td>
   <td>996</td>
</tr>
<tr>
   <td class="faux_th">Total</td>
   <td>1488</td> ##this is the value I need each time
   <td>996</td>
   <td>1139</td>
</tr>

BS4を使用したPython:

houseArea = bs.find('table', {'id': 'ctl00_cphBody_repeaterBuilding_ctl00_gridBuildingArea'})
houseRows = houseArea.findAll('tr')[3]
houseArea1 = str(houseArea)
houseRows = houseRows.findAll('td')[1]
houseRows = str(houseRows)
houseRows = houseRows.replace('<td>', '')
houseRows = houseRows.replace('</td>', '')

これは、私が試した例では完全に機能しました。5つのTRタグを含む上記のスニペットを使用すると、明らかに壊れます。私が達成しようとしているのは、「合計」というラベルの付いたTRから2番目のTDをプルすることです。私はいろいろな方法を試しましたが、これを処理する方法がわかりません。逆からインデックスを付ける方法はありますか?その場合、「合計」TRの位置は常に最後になります。私の最後のオプションは、正規表現を使用してHTMLと一致させることですが、そこからでも、必要な結果を取得する方法がわかりません。これに取り組む方法についてのアドバイスは素晴らしいでしょう。

4

1 に答える 1

0

確かにあります[-1]、インデックスとして使用してください:

lastRow = houseRows[-1]

負のインデックスはリストの現在の長さから差し引かれるので、インデックス-2は1つだけですが最後のエントリなどです。

于 2013-01-29T19:16:05.140 に答える