我正在使用Html Agility Pack查看是否存在具有特定类和ID的div。
string target = "http://192.168.3.230/index.htm";
WebClient client = new WebClient();
string html = client.DownloadString(target);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledoff']") != null){
//actions in here
}
else if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledon']") != null)
{
//actions in here
}
目前else if应该为true,但它正在if语句中执行操作。 我做的时候,我已经看到了这项工作
doc.Load("c:\\somelocaldest\\page.htm");
当我尝试从实际网站而不是本地保存的网站文件中执行此操作时,它将看到ID正确并忽略该类。什么可能导致它在获取本地文件的html和外部站点/设备之间的行为方式不同?
答案 0 :(得分:1)
首先,我建议你这样做,对我而言,它比WebClient工作得更快。
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(target);
如果你说这适用于本地hmtl文件而且当html在服务器上时不起作用,那么请执行以下操作。
File.WriteAllText(path,doc.DocumentNode.OuterHtml);
有时页面的源代码在使用htmlweb(或webclient)下载时会有所不同,所以请使用这个新的html文件再次创建xpath。