我有一个包含tr(html表格行)字符串的列表,每个tr都有3个td。
我正在使用HtmlAgilityPack过滤掉网页中的数据。
var data= from tr in content.ChildNodes.Where(c =>c.Name.Equals("tr"))
select tr;
<tr><td></td><td>aaa</td><td></td></tr>
<tr><td></td><td>bbb</td><td></td></tr>
<tr><td></td><td>aaa</td><td></td></tr>
<tr><td></td><td>aaa</td><td></td></tr>
...
我希望得到所有按td [2]分组的值,即:aaa,bbb
感谢。
更新:data.GroupBy(tr =&gt; tr.ChildNodes.Where(e =&gt; e.Name ==&#34; td&#34;) .Skip(1)。首先()的innerText)。工作正常
谢谢大家。
答案 0 :(得分:2)
尝试:
data.GroupBy(tr => tr.ChildNodes
.Where(e => e.Name == "td")
.Skip(1).First().Value));
当然,这假设每个td
中至少有2 tr
秒。如果没有,那么您还必须在Skip(1).First()
调用中进行一些空检查。
答案 1 :(得分:0)
这应该将TD值保存到集合中。
var entries = from td in data.DocumentNode.SelectNodes("//td").Where(node => node.InnerHtml != string.Empty) select td.InnerHtml;