我正在尝试解析html页面(使用Html Agility pack)并提取所有图像链接。现在我想看看链接是否在同一主机上。以下代码是否涵盖所有方案?有没有更好的解决方案来实现这一目标?
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//img/@src"))
{
var link = node.Attributes["src"].Value.Trim();
if (link.StartsWith("http", true, null) || link.StartsWith("//"))
//the link is not on the same host
}
答案 0 :(得分:1)
我会使用以下正则表达式:
if(Regex.IsMatch(link, @"^(\w+:)*\/\/"))
{
// The link is not on the same host
}
这适用于任何协议,并且不会匹配本地目录或以http
开头的文件,例如评论中的@AlexK示例