【问题标题】:Extract Title from html link从 html 链接中提取标题
【发布时间】:2016-11-23 19:50:10
【问题描述】:

我有以下 HTML 字符串:

<a href="/tothepage" title="the page">The Link</a>.  

如何轻松地从 HTML sn-p 中提取标题?首选正则表达式或其他 VB.NET 解决方案,但 C# 也可以。

我想要“页面”而不是链接文本:我想要 title 属性的值。

如果这样做很容易的话,我已经安装了 HTMLAgilityPack。

【问题讨论】:

  • 您是要获取引号the page 之间的部分还是标签The Link 之间的字符串?
  • 我想要“页面”而不是“链接”,我想要属性标题。如果它很容易做到,我已经安装了 HTMLAgilityPack。

标签: regex vb.net


【解决方案1】:

由于您已经拥有 HtmlAgilityPack,您可以像这样提取“title”属性:

Option Infer On
Option Strict On

Imports HtmlAgilityPack

Module Module1

    Sub Main()
        Dim a = "<a href=""/tothepage"" title=""the page"">The Link</a>."
        Dim doc As New HtmlDocument()
        doc.LoadHtml(a)
        Dim node = doc.DocumentNode.SelectSingleNode("/a")
        Dim title = node?.Attributes("title")?.Value

        Console.WriteLine(title) ' outputs "the page"

        Console.ReadLine()

    End Sub

End Module

当然,您不需要那么多代码行,因为这是一个完整的工作示例。

?. 部分防止它在node 为 Nothing 时引发错误(在这种情况下,如果没有 "" 元素)并防止它在没有 "title" 时引发错误" 属性。

【讨论】:

  • 我从来没有意识到我需要将超链接字符串视为文档。谢谢,我得到了我需要的东西。
  • @MiscellaneousUser 虽然您可以使用正则表达式解析少量 HTML,但这通常不是一个好主意 - 原因在相当有趣的帖子 RegEx match open tags except XHTML self-contained tags 中给出.
【解决方案2】:

使用正则表达式,组将包含它([^"]*)

title="([^"]*)"

C#

using System.Text.RegularExpressions;
static void Main(string[] args)
    {
        string originalString = "<a href=\" / tothepage\" title=\"the page\">The Link</a>.";
        Regex rgx = new Regex("title=\"([^\"]*)\"", RegexOptions.IgnoreCase);
        Match match = rgx.Matches(originalString)[0];
        Console.WriteLine(match.Groups[1]);
        Console.ReadLine();
    }

【讨论】:

  • 你能把它放到.NET行吗?
  • + 应该是*,因为可以明确给出标题,但仍然为空。
  • 感谢代码,知道但很少使用正则表达式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2016-10-07
  • 2013-12-15
  • 1970-01-01
  • 2019-11-16
  • 2012-04-10
相关资源
最近更新 更多