如何使用XPath从html中检索特定数据?

时间:2014-02-07 14:49:40

标签: html objective-c parsing xpath

嘿伙计们我很难用XPath从网站上获取股票价格。

html是这样的:

<span class=" price">
<meta content="14.400" itemprop="price">
14.400
<span itemprop="priceCurrency"> BRL</span>
</span>

我用来检索14.400值的路径(所有这些都让我为空)是:

@"//span[@class=' price']";
@"/span[@class=' price']";
@"span[@class=' price']";
@"//meta[@itemprop='price'"];
@"/html/body/div[2]/div/div/div/div[2]/span/meta";
@"//html/body/div[2]/div/div/div/div[2]/span/meta";

在尝试了更多的后,我可以得到我需要的是使用这个xPath:

@"//span[@class=' price']/meta";

获取此日志:

2014-02-07 13:50:39.616 manejoderisco[2838:60b] {
nodeAttributeArray =     (
            {
        attributeName = itemprop;
        nodeContent = price;
    },
            {
        attributeName = content;
        nodeContent = "14.280";
    }
);
nodeName = meta;
}

但仍然让我失去了价值......

2 个答案:

答案 0 :(得分:1)

我终于设法创建了正确的xPath:

@"//span/meta/@content

答案 1 :(得分:0)

您尝试解析的HTML格式不正确,因为meta没有结束标记。
但是,如果您确实能够捕获元标记,则可能需要选择内容:

//span[@class=' price']/meta/@content

或者,如果您需要第一个文本字段,

//span[@class=' price']//text()[1]

也可以。

不要忘记,当您执行//span/meta时,您选择了meta 节点,所以<meta content="14.400" itemprop="price">14.400(结束于任何地方,取决于您使用的是什么xpath,因为HTML格式不正确)。如果您需要内容,则需要选择@content属性或带text()的文本字段。