【问题标题】:Regular Expressions (HTML parsing on iPhone)正则表达式(iPhone 上的 HTML 解析)
【发布时间】:2010-10-24 15:50:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone html xpath hpple


    【解决方案1】:

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

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

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

    【讨论】:

    • 信息量很大。有没有什么程序可以让我轻松找到合适的 XPath?还是 XPath 足够容易使用?
    • “正确的 XPath”是什么意思?您的意思是找到将选择给定节点的 XPath?我没有看到任何应用程序可以做到这一点。但是,有很多 XPath testers 可以让您测试给定 XPath 是否为给定文档选择了您想要的节点。如果您使用 Mac,请先尝试AquaPath。至于使用 XPath,请搜索教程。它们的某些方面很容易使用;它们有点像进化的文件路径(我认为它发生在 30 级)。
    • +1 好答案。 A小调:a表示名为a的子元素
    • @Alejandro: 哦。为了简化事情,我忽略了与轴有关的任何内容。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 2014-12-06
      • 2012-09-12
      • 2014-05-16
      • 1970-01-01
      • 2014-06-08
      相关资源
      最近更新 更多