正则表达式(iPhone上的HTML解析)

时间:2010-10-24 15:50:11

标签: iphone html xpath hpple

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

  • 所有xpath都相对于context node进行解释。在这种情况下,它是根节点。
  • //是缩写,意为“所有后代”
  • a表示“节点类型为'a'的所有子nodes”(在HTML中,即anchors
  • [...]包含predicate,精炼哪个a匹配
    • @是属性节点的缩写
    • @class表示名为“class”的属性
    • @class='sponsor'表示类属性等于“赞助商”。请注意,这与具有包含“赞助商”的类的节点不匹配,例如<a class="big sponsor" ...>;该类必须相等

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

答案 1 :(得分:0)

这是一个XPath表达式,而不是正则表达式。 W3C在这里有一个XPath参考:http://www.w3.org/TR/xpath/。基本上你正在寻找&lt; a&gt; “赞助商”一词的元素。

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