vb net + 使用 htmlagilitypack 从 div 获取内容

vb net + getting content from a div with htmlagilitypack

流量:
1.(好)我下载一个 json
2.(好的)我从包含 html
的 json 对象中解析一个值 3.(不正确)我显示 div.countries
中的值
我的代码:

Dim webClient As New System.Net.WebClient
Dim result As String = webClient.DownloadString("http://example.com/countries.json")
Dim values As JObject = JObject.Parse(result)
Dim finalHTML As String = values.GetValue("countries_html")

基本上 finalHTML 变量如下所示:

<div class="country_name">USA</div>
<div class="country_name">Ireland</div>
<div class="country_name">Australia</div>

我卡住了,不知道如何继续前进。 我需要遍历所有 div.country_name 并获取其中的 inner_text。希望有道理。

这里有一篇关于使用 HAP 的好文章:http://www.mikesdotnetting.com/article/273/using-the-htmlagilitypack-to-parse-html-in-asp-net

由于 finalHTML 字符串已经只包含目标 div 元素,您可以简单地将字符串加载到 HtmlDocument 对象并使用一些 LINQ 来投影 divs 到集合 -IEnumerableList<T> 或任何最适合您需要的 InnerText 字符串:

....
Dim finalHTML As String = values.GetValue("countries_html")
Dim doc = New HtmlDocument()
doc.LoadHtml(finalHTML)
Dim countries = doc.DocumentNode.Elements("div").Select(Function(o) o.InnerText.Trim())

'print the result as comma separated text to console:
Console.WriteLine(String.Join(",", countries))

Dotnetfiddle Demo

输出:

USA,Ireland,Australia