嗨,谢谢你。
我试图在VB.NET中使用HTMLAgilityPack来遍历表中的<td>
标签集合。它们包含在<tr>
标记内(自然地)。
我创建了下面的循环来根据需要访问TR和TD:
For Each tr In table.SelectNodes(".//tr")
For Each td In tr.SelectNodes("td")
'(Handle td's here)
Next
Next
问题是网站的HTML在其模板中的某个特定TD上缺少结束标记。这导致在每个循环中拾取一个3个TD,因为它将第3个TD视为包含所有其他循环的无限标记。例如:
<tr>
<td>Div 1 info</td>
<td>Div 2 info</td>
<td>Div 3 info
<td>Div 4 info</td>
<td>Div 5 info</td>
</tr>
我的问题是如何解决此问题以循环完整的TD集合?我试图检查TR.Count是否为3然后更新tr(2).InnerHTML在适当的位置插入标签。它只是不更新。
感谢您提供的任何帮助!谢谢!
答案 0 :(得分:1)
设置HtmlDocument.OptionFixNestedTags
属性:
Dim html = New HtmlDocument
html.OptionFixNestedTags = True
html.LoadHtml(File.ReadAllText(htmlFile))
Dim table As HtmlNode = html.DocumentNode
For Each tr In table.SelectNodes(".//tr")
For Each td In tr.SelectNodes("td")
Console.WriteLine(td.InnerText.Trim())
Next
Next