【发布时间】:2015-09-19 15:21:12
【问题描述】:
我正在使用 HtmlAgilityPack 从 HTML 代码源中提取数据。 这是 HTML 的示例:
<div class="enum-container">
<div class="enum">
<span class="field-key">MD5</span> a4188cf2b9189f82b855350233a307eb
</div>
<div class="enum">
<span class="field-key">SHA1</span> c3eedd67a14810b8c639eb77ed2731e574245b2a
</div>
<div class="enum">
<span class="field-key">File size</span>
3.8 KB ( 3854 bytes )
</div>
</div>
我使用这个代码:
Dim Table2 As New DataTable()
Table2.Columns.Add("Value1", GetType(String))
Table2.Columns.Add("Value2", GetType(String))
For Each row1 As HtmlNode In doc.DocumentNode.SelectNodes("//div[@id='file-details']//div[@class='enum-container']//div[@class='enum']")
Dim MyValue1 As HtmlNode = row1.SelectSingleNode("//span[@class='field-key']")
Dim MyValue2 As String = row1.InnerText
Table2.Rows.Add(MyValue1.InnerText, MyValue2)
Next
DataGridView3.DataSource = Table2
结果是这样的:
http://i.stack.imgur.com/vPriY.png
您可以看到,第一列得到一个重复值(MD5)。
我想要的是这样的:
http://i.stack.imgur.com/jlsk5.png
谢谢。
【问题讨论】:
-
@har07 我以前用过这个。我总是将 MD5 作为表中所有行的值。
-
@Tajrib 从您选择跨度的位置删除 //。您正在选择文档中匹配的第一个跨度。这就是为什么你每次都得到相同的节点
-
@Brian 我删除了 // 的跨度,我得到一个错误。
标签: c# html vb.net extract html-agility-pack