基于InnerText C#获取URL

时间:2013-08-08 09:19:04

标签: c# regex html-agility-pack

我想根据内部文本值从html或字符串中获取网址。

例如:

<a href="http://www.itsmywebaddress.com">My Website</a>.
<a href="http://www.everythingisforgood.com">good</a>.

在这里,我需要根据“我的网站”(我们提供的输入)的内部文本来获取URL。

任何人都可以告诉我,Regex代码是什么或使用HtmlAgilityPack我们怎么做?

我使用了以下Regex方法。但是,它获取“a”标记内的所有值。

Regex.Match(str, @"<a [^>]*>(.*?)</a>").Groups[1].Value;

提前致谢...

2 个答案:

答案 0 :(得分:1)

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
var hrefs = doc.DocumentNode.SelectNodes("//a[@href]")
             .Where(link => link.InnerHtml == str)
             .Select(l=>l.Attributes["href"].Value).ToList();

答案 1 :(得分:0)

如果您正在使用htmlagility,您应该能够直接访问href而无需使用正则表达式。

这样的事情应该有用;

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
HtmlAttribute att = link.Attributes["href"];
}