XPath 使用 HTML Agility Pack 的查询问题
本文关键字:查询 问题 Pack Agility 使用 HTML XPath | 更新日期: 2023-09-27 17:56:09
我正在尝试使用HTML敏捷包从这个网站上抓取价格字段。
我的代码如下;
var web = new HtmlWeb();
var doc = web.Load(String.Format(overClockersURL, componentID));
var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id='"prodprice'"]");
我通过使用Firebug的"Copy as XPath"功能获得了XPath查询。
我遇到的问题是 SelectSingleNode 返回 null - 它似乎找不到查询指定的元素。我对为什么有点困惑,但我对 XPath 没有太多经验,所以希望能就我做错什么提供一些指示。
发生这种情况时,您应该检查页面是否正确加载(您说您是通过HTTP代理?
尝试将doc.DocumentNode.OuterHtml
的内容写入文本文件,以便查看页面是否正确加载。也许您收到的是错误页面,而不是原始页面。
如果我运行此代码:
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 标记。