Получить все ссылки на странице html?

Я работаю над небольшим хобби-проектом. Я уже написал код, чтобы получить url, загрузить заголовок и вернуть тип/тип mime.

Тем не менее, шаг до этого - тот, который я застрял - мне нужно получить содержимое всех URL-адресов на странице, основанной внутри тега, и в кавычках, т.е.

...
<link rel='shortcut icon' href="/static/favicon.ico" type="image/x-icon" />
...

Найдет ссылку favicon.

Есть ли что-нибудь полезное в библиотеке .net или это будет случай для регулярного выражения?

+36
11 февр. '10 в 22:53
источник поделиться
4 ответа

Я бы посмотрел, используя Html Agility Pack.

Вот пример прямо со страницы их примеров о том, как найти все ссылки на странице:

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

 }
+52
11 февр. '10 в 22:56
источник

Вам нужно использовать HTML Agility Pack.

Например:

var doc = new HtmlWeb().Load(url);
var linkTags = doc.DocumentNode.Descendants("link");
var linkedPages = doc.DocumentNode.Descendants("a")
                                  .Select(a => a.GetAttributeValue("href", null))
                                  .Where(u => !String.IsNullOrEmpty(u));
+30
11 февр. '10 в 22:57
источник
другие ответы

Связанные вопросы


Похожие вопросы

В BCL нет ничего встроенного, но, к счастью, вы можете использовать HTML Agility Pack, чтобы выполнить эту задачу достаточно просто.

Что касается вашей конкретной проблемы, см. Легко извлекать ссылки из фрагмента html с помощью HtmlAgilityPack:

private List<string> ExtractAllAHrefTags(HtmlDocument htmlSnippet)
{
    List<string> hrefTags = new List<string>();

    foreach (HtmlNode link in htmlSnippet.DocumentNode.SelectNodes("//a[@href]"))
    {
        HtmlAttribute att = link.Attributes["href"];
        hrefTags.Add(att.Value);
    }

    return hrefTags;
}
+14
11 февр. '10 в 22:56
источник

Как насчет Regex?

<(a|link).*?href=(\"|')(.+?)(\"|').*?>

с флагами IgnoreCase и SingleLine

Смотрите демонстрацию на systemtextregularexpressions.com regex.matches

+7
04 авг. '15 в 9:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос