获取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=(\"|')(.+?)(\"|').*?> 
 带有标志IgnoreCase和SingleLine 
请参阅systemtextregularexpressions.com上的演示。regex.matches