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 没有太多经验,所以希望能就我做错什么提供一些指示。

XPath 使用 HTML Agility Pack 的查询问题

发生这种情况时,您应该检查页面是否正确加载(您说您是通过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 标记。