【问题标题】:Parse html from a string in VB.NET using LINQ使用 LINQ 从 VB.NET 中的字符串解析 html
【发布时间】:2018-01-13 17:52:42
【问题描述】:

我想从网页导入 html,然后解析它并从元素中检索 http 链接。我能够抓取 html 并将其放入字符串中。另外,如果我有 xml 格式的 html,我可以为每个循环执行一个来检索数据。但我无法弄清楚如何获取 html 字符串并使其可以被 LINQ 读取。我想我在这里遗漏了一些简单的部分。

Sub GetTest()
        Dim source As String = "http://gd2.mlb.com/components/game/mlb/year_2018/month_03/day_29/"
        Dim Client As New WebClient
        Dim html As String = Client.DownloadString(source)

        Dim xml = XElement.Parse(html)

        Dim links = From link In xml...<a>

        For Each link In links
            MessageBox.Show(link.@href)
        Next
    End Sub

【问题讨论】:

  • 这和your last question有什么不同?
  • 我的最后一个问题得到了解答。我能够从不同的页面解析 xml。这个是html的,好像不太一样。
  • 你应该通过 NuGet 安装 HtmlAgilityPack,
  • Html 不是标准 Xml。诸如未闭合标签&lt;br&gt; 之类的东西以及a &lt; 5 之类的简单javascript 表达式可能会破坏解析器。这就是 HtmlAgilityPack 存在的原因。

标签: html vb.net linq linq-to-xml


【解决方案1】:

去掉第一个未闭合标签后,该页面可以解析为Xml:

Dim xml = XElement.Parse(html.Substring(html.IndexOf(">") + 1))
For Each link In xml.Descendants("a")
    Console.WriteLine(link.Attribute("href"))
Next

一般来说,在尝试解析 Html 时会遇到多个问题,就好像它是标准 Xml 一样。所以最好使用 HtmlAgilityPack。

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-04-05
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多