1

WebサイトのデータでいっぱいのHTMLテーブルをスクレイプしようとしています。残念ながら、テーブルのソースコードは次のようになります。

<table border="1" cellspacing="0" cellpadding="3">

<tr>
<td bgcolor="silver"><font face="arial,helvetica" size="1">Last Name</font></td>

<td bgcolor="silver"><font face="arial,helvetica" size="1">First Name</font></td>

<td bgcolor="silver"><font face="arial,helvetica" size="1">Middle</font></td>
</tr>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
Data</font></td>
</tr>   

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>

<td valign="top"><font face="arial,helvetica" size="1">
More Data</font></td>
</tr>
</table>

ヘッダーの後の各行に開始「tr」タグがないことに注意してください。テーブルはブラウザに正常に表示されますが、htmlアジリティパックは開始タグのないtr要素を認識しません。とにかく、この問題を修正するためにhtmlアジリティパックを入手できますか?自分でtrタグを挿入するのではなく、必要に応じて挿入します。

4

1 に答える 1

2

を解析しtdて、3つの項目でグループ化することができます。

var list = doc.DocumentNode.Descendants("td")
            .Select((td, i) => new { td, i })
            .GroupBy(x => x.i / 3)
            .Select(g => g.Select(t => t.td.InnerText).ToList())
            .ToList();
于 2012-11-08T23:04:50.687 に答える