Я работаю над небольшим проектом хобби. Я уже написал код для получения URL, загружаю заголовок и возвращаю тип пантомимы / тип контента.
Однако шаг, прежде чем это - то, которое я застреваю на - я должен получить содержание всех URL на основанной на странице внутренней части тег, и в кавычках т.е.
...
<link rel='shortcut icon' href="/static/favicon.ico" type="image/x-icon" />
...
Нашел бы ссылку favicon.
Действительно ли там что-нибудь полезно в библиотеке .NET, или это оказывается перед необходимостью быть случаем для regex?
Я бы посмотрел на Html Agility Pack .
Вот пример прямо со страницы примеров того, как найти все ссылки на странице:
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(/* url */);
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
}
В 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;
}
Вам нужно использовать 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));