获取html页面上的所有链接?

我正在做一个小爱好项目。 我已经写了代码来获得一个URL,下载头,并返回MIMEtypes/内容types。

然而,在这之前的步骤是一个即时贴坚持 – 我需要检索基于内部标签的页面上的所有url的内容,并在引号即

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

会findfavicon链接。

在.net库中有没有什么有用的东西,或者这将是一个正则expression式的情况?

我会看看使用Html Agility Pack 。

以下是他们的示例页面中的一个示例,其中介绍如何查找页面中的所有链接:

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

您需要使用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)); 

BCL中没有任何内容,但幸运的是,您可以使用HTML Agility Pack轻松完成此任务。

至于你的具体问题,请参阅HtmlAgilityPack轻松从HTML片段提取链接 :

 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; } 

如何正则expression式?

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

带有标志IgnoreCaseSingleLine

请参阅systemtextregularexpressions.com上的演示。regex.matches