我需要验证给定网页上是否存在特定的超链接。我知道如何下载源 HTML。我需要帮助的是确定“目标”网址是否作为“源”网页中的超链接存在。
这是一个小控制台程序来演示该问题:
public static void Main()
{
var sourceUrl = "http://developer.yahoo.com/search/web/V1/webSearch.html";
var targetUrl = "http://developer.yahoo.com/ypatterns/";
Console.WriteLine("Source contains link to target? Answer = {0}",
SourceContainsLinkToTarget(
sourceUrl,
targetUrl));
Console.ReadKey();
}
private static bool SourceContainsLinkToTarget(string sourceUrl, string targetUrl)
{
string content;
using (var wc = new WebClient())
content = wc.DownloadString(sourceUrl);
return content.Contains(targetUrl); // Need to ensure this is in a <href> tag!
}
注意最后一行的注释。我可以查看目标 URL 是否存在于源 URL 的 HTML 中,但我需要验证 URL 是否在<href/>
标记内。这样我可以验证它实际上是一个超链接,而不仅仅是文本。
我希望有人会有一个踢屁股的正则表达式或我可以使用的东西。
谢谢!
这是使用 HtmlAgilityPack 的解决方案:
private static bool SourceContainsLinkToTarget(string sourceUrl, string targetUrl)
{
var doc = (new HtmlWeb()).Load(sourceUrl);
foreach (var link in doc.DocumentNode.SelectNodes("//a[@href]"))
if (link.GetAttributeValue("href",
string.Empty).Equals(targetUrl))
return true;
return false;
}