如何从C#中的字符串中提取href标签?
Posted
技术标签:
【中文标题】如何从C#中的字符串中提取href标签?【英文标题】:How to extract href tag from a string in C#? 【发布时间】:2014-04-04 18:04:57 【问题描述】:我有一个方法可以返回以下格式的字符串:
string tableTag = "<th><a href="Boot_53.html">135 Boot</a></th>"
我想获取href
属性的值并将其存储到另一个名为link
的字符串中:
string link = "Boot_53.html"
换句话说,link
应在字符串中分配href
属性。我怎样才能做到这一点?
【问题讨论】:
How can I do that in C#?
不是一个好问题。展示你到目前为止所尝试的,你被卡住的地方..
看看这个 SO 答案***.com/a/15926523/1593273
【参考方案1】:
您可以使用诸如HTML agility pack
之类的 HTML 解析器来解析输入的 HTML 并提取您要查找的信息:
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
static void Main(string[] args)
var doc = new HtmlDocument();
string tableTag = "<th><a href=\"Boot_53.html\">135 Boot</a></th>";
doc.LoadHtml(tableTag);
var anchor = doc.DocumentNode.SelectSingleNode("//a");
if (anchor != null)
string link = anchor.Attributes["href"].Value;
Console.WriteLine(link);
【讨论】:
【参考方案2】:如果您知道 html 实际上是一个 xhtml(一个符合 xml 标准的 html [或多或少]),那么您可以简单地使用专用于 xml 的工具(通常比那些用于 html 的工具更简单)来解析。
var hrefLink = XElement.Parse("<th><a href=\"Boot_53.html\">135 Boot</a></th>")
.Descendants("a")
.Select(x => x.Attribute("href").Value)
.FirstOrDefault();
【讨论】:
【参考方案3】:您可以使用正则表达式:
string input= "<th><a href=\"Boot_53.html\">135 Boot</a></th>";
string regex= "href=\"(.*)\"";
Match match = Regex.Match(input, regex);
if (match.Success)
string link= match.Groups[1].Value;
Console.WriteLine(link);
【讨论】:
【参考方案4】:使用HtmlAgilityPack
解析HTML:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml( tableTag );
string link = doc.DocumentNode.SelectSingleNode("//a").Attributes["href"].Value;
【讨论】:
【参考方案5】:您可以使用 AngleSharp 作为 HtmlAgilityPack 的替代品:
var context = BrowsingContext.New(Configuration.Default);
string tableTag = "<th><a href=\"Boot_53.html\">135 Boot</a></th>";
var document = await context.OpenAsync(req => req.Content(tableTag));
var anchor = document.All.FirstOrDefault(x => x.LocalName == "a");
if (anchor != null)
string link = anchor.GetAttribute("href"); // "Boot_53.html"
【讨论】:
以上是关于如何从C#中的字符串中提取href标签?的主要内容,如果未能解决你的问题,请参考以下文章