我正在尝试使用HTML Agility Pack从this website中删除价格字段。
我的代码如下;
var web = new HtmlWeb();
var doc = web.Load(String.Format(overClockersURL, componentID));
var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");
我使用Firebug的“复制为XPath ”功能获得了XPath查询。
我遇到的问题是 SelectSingleNode 正在返回 null - 它似乎找不到查询指定的元素。我有点难以理解为什么,但我对XPath没有多少经验,所以我会对我做错了一些指点。
答案 0 :(得分:3)
当发生这种情况时,您应该检查页面是否正确加载(您说您是通过HTTP代理?)
尝试将doc.DocumentNode.OuterHtml
的内容写入文本文件,以便查看页面是否正确加载。也许你得到一个错误页面而不是原始页面。
答案 1 :(得分:1)
如果我运行此代码:
var web = new HtmlWeb();
var doc = web.Load("http://www.overclockers.co.uk/showproduct.php?prodid=GX-033-HS");
var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");
Console.WriteLine("price=" + priceContent.InnerHtml);
输出:
price=529.99
所以它似乎正在发挥作用。您也可以使用//span[@id=\"prodprice\"]"
,因为它可以避免所有非SPAN标记。