Получение URL-адреса на основе InnerText С#

58
6

Я хотел бы получить URL-адрес из 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;

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

спросил(а) 2020-04-04T00:25:48+03:00 6 месяцев, 3 недели назад
1
Решение
58

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

ответил(а) 2020-04-04T00:45:09.694340+03:00 6 месяцев, 3 недели назад
42

Если вы используете 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"];
}

ответил(а) 2020-04-04T00:25:48+03:00 6 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема