2013-08-08 5 views
1

Я хотел бы получить URL-адрес из html или строки на основе внутреннего текстового значения.Извлечение URL-адреса на основе InnerText C#

Для примера:

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

Здесь, мне нужно принести URL на основе внутреннего текста "My Website" (который мы предоставляем в качестве входных данных).

Может ли кто-нибудь сказать мне, что такое код Regex для этого или с помощью HtmlAgilityPack как мы можем это сделать ??

Я использовал следующий метод Regex. Тем не менее, он извлекает все значения внутри тега «a».

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

Заранее спасибо ...

ответ

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(); 
+0

Но он будет получать все URLs в HTMLDocument. Но я хочу получить URL-адрес, который содержит внутренний текст некоторой строки, которую мы задали как ввод – yasmuru

+0

Тогда вы можете добавить требуемое условие .Where (...) statement –

+0

Спасибо @Damith, я проверю это ... – yasmuru

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"]; 
} 
+0

да ..Это будет получать все ссылки в HTMLDocument .. но я хочу, чтобы принести URL на основе InnerText который мы обеспечиваем – yasmuru

Смежные вопросы