通过HtmlAgilityPack从表中获取链接
本文关键字:获取 链接 HtmlAgilityPack 通过 | 更新日期: 2023-09-27 18:15:59
我有一个简单的html表:
<table>
<tr>
<td>
<a href="http://someurl_1.com">item name1</a>
</td>
<td>
Value 1
</td>
</tr>
<tr>
<td>
<a href="http://someurl_2.com">item name2</a>
</td>
<td>
Value 2
</td>
</tr>
</table>
现在我需要有数据从表列表>(或string[][])
我使用:
List<List<string>>
table = doc.DocumentNode.SelectSingleNode("//table")
.Descendants("tr")
.Skip(1)
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
.ToList();
它成功地获取了字符串数据,所以结果是
table[0][0] -> item name1
table[0][1] -> value 1
table[1][0] -> item name2
table[1][1] -> value 2
但是数组中没有url
我怎么能得到它的表值,所以在结果中我需要像:
table[0][0] -> http://someurl_1.com
table[0][1] -> item name1
table[0][2] -> value 1
table[1][0]-> http://someurl_2.com
table[1][1] -> item name2
table[1][2] -> value 2
任何帮助感谢!由于
我建议对每个单元格使用xpath,并将它们的数据映射到您的数组。
例如,第二项的xpath为/html/body/table/tbody/tr[2]/td[1]/a
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlText);
var nodes = doc.DocumentNode.SelectNodes("/html/body/table/tbody/tr[2]/td[1]/a");
将为您提供<a href="http://someurl_2.com">item name2</a>
作为节点,您可以进一步修饰该节点以获取url或文本。