首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SelectSingleNode和SelectNodes XPath语法

SelectSingleNode和SelectNodes XPath语法
EN

Stack Overflow用户
提问于 2013-08-08 09:01:52
回答 1查看 10.5K关注 0票数 1

我的问题和这个非常相似,XmlNode.SelectSingleNode syntax to search within a node in C#

我正在尝试使用HTML Agility Pack来拉动价格/条件/发货价格...下面是我抓取的网址:http://www.amazon.com/gp/offer-listing/0470108541/ref=dp_olp_used?ie=UTF8&condition=all

下面是我的代码片段:

    string results = "";
    var w = new HtmlWeb();
    var doc = w.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//div[@class='a-row a-spacing-medium olpOffer']");

    if (nodes != null)
    {
         foreach (HtmlNode item in nodes)
         {
              var price = item.SelectSingleNode(".//span[@class='a-size-large a-color-price olpOfferPrice a-text-bold']").InnerText;
              var condition = item.SelectSingleNode(".//h3[@class='a-spacing-small olpCondition']").InnerText;
              var price_shipping = item.SelectSingleNode("//span[@class='olpShippingPrice']").InnerText;
              results += "price " + price + " condition " + condition + " ship " + price_shipping + "\r\n";
         }
    }
    return results;

无论我尝试哪种组合。//和。还有./和/等等..。我不能得到我想要的(刚刚尝试学习xpath),而且目前它一遍又一遍地返回第一项,就像我之前提到的原始问题一样。我认为我对选择节点的工作方式和/或什么被认为是节点缺乏基本的理解。

更新

好了,我已经将URL更改为指向另一本书,前两项工作正常……当我尝试将第三项(price_shipping)更改为".//“时,绝对没有从任何内容中提取任何信息。这一定是由于有时甚至没有发货价格,并且省略了该跨度。我该怎么处理呢?如果price_shipping !=null,我试过了。

更新

解决了。我从price_shipping中删除了当它为空时导致问题的".InnerText“...然后我做了null检查,然后就可以安全地使用.InnerText了。

EN

回答 1

Stack Overflow用户

发布于 2013-08-09 04:46:34

解决了。我从price_shipping中删除了当它为空时导致问题的".InnerText“...然后我做了null检查,然后就可以安全地使用.InnerText了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18116296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档