0

我正在尝试使用objective-c从网站中提取数据。这对我来说都很新鲜,所以我做了一些研究。我现在知道的是我需要使用 xpath,并且我有另一个包装器,称为 hpple for iPhone。我已经在我的项目中启动并运行它。

我对从网站检索信息的方式感到困惑。显然我要在这行代码中使用正则表达式:

NSArray * a = [doc search:@"//a[@class='sponsor']"];

这只是一个例子。搜索中的那个东西:@“....”是正则表达式吗?如果是这样,我想我可以开发程序解析站点所需的数百种模式(我需要大量数据),但有更好的方法吗?我很迷茫。任何帮助表示赞赏。

4

2 回答 2

1

该参数是 XPath,而不是正则表达式。这是一个细分:

  • 所有 xpath 都相对于上下文节点进行解释。在这种情况下,它是根节点。
  • //是一个缩写,意思是“所有后代”
  • a表示“节点类型为 'a' 的所有子节点”(在 HTML 中,即为anchors
  • [...]包含谓词,细化a要匹配 的谓词
    • @是属性节点的缩写
    • @class表示名为“类”的属性
    • @class='sponsor'表示等于“赞助商”的类属性。请注意,这不会将节点与包含“赞助商”的类匹配,例如<a class="big sponsor" ...>; 类必须相等

总之,我们有“'a'节点从根下降,其类等于'sponsor'”。

于 2010-10-24T16:04:18.337 回答
0

那是 XPath 表达式,而不是正则表达式。W3C 在这里有一个 XPath 参考:http: //www.w3.org/TR/xpath/。基本上,您正在搜索具有“赞助商”类的 <a> 元素。

请注意,这是一件好事!正则表达式不利于解析 HTML。

于 2010-10-24T15:54:44.177 回答