Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式(iPhone上的HTML解析)_Iphone_Html_Xpath_Hpple - Fatal编程技术网

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

正则表达式(iPhone上的HTML解析),iphone,html,xpath,hpple,Iphone,Html,Xpath,Hpple,我正在尝试使用objective-c从网站中提取数据。这对我来说都是全新的,所以我做了一些研究。我现在知道的是我需要使用xpath,我有另一个包装器,叫做iPhone的hpple。我已经在我的项目中启动并运行了它 我对从网站检索信息的方式感到困惑。显然,我要在这行代码中使用正则表达式: NSArray * a = [doc search:@"//a[@class='sponsor']"]; 这只是一个例子。搜索中的东西是:@“…”正则表达式吗?如果是这样,我想我可以开发数百种模式,我的程序需要

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

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

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

这只是一个例子。搜索中的东西是:@“…”正则表达式吗?如果是这样,我想我可以开发数百种模式,我的程序需要这些模式来解析站点(我需要很多数据),但是有更好的方法吗?我很迷茫。非常感谢您的帮助。

这是一个XPath表达式,而不是正则表达式。W3C在这里有一个XPath引用:。基本上,您正在使用类“赞助商”搜索元素


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

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

  • 所有XPath都是相对于一个。在本例中,它是根节点
  • /
    是一个缩写,意思是“所有后代”
  • a
    表示“节点类型为'a'的所有子节点”(即HTML)
  • […]
    包含一个匹配的
    a
    • @
      是属性节点的缩写
    • @class
      表示名为“class”的属性
    • @class='scandor'
      表示等于“赞助商”的类属性。注意:这将不匹配包含“赞助商”的类的节点,例如
      ;阶级必须平等

总之,我们有“'a'节点从根开始向下,其类等于'shandor'”。

非常有用。有没有一个程序可以让我轻松找到合适的XPath?或者XPath是否足够容易使用?您所说的“适当的XPath”是什么意思?您的意思是找到一个选择给定节点的XPath吗?我还没见过这样的应用。但是,有很多方法可以让您测试给定XPath是否为给定文档选择所需的节点。如果你使用Mac电脑,试着从开始。关于使用XPath,请搜索教程。它们的某些方面很容易处理;它们有点像进化的文件路径(我认为它发生在30级)。+1回答得好。A小调:
A
表示名为
A
@Alejandro:d'oh的子元素。在我急于简化事情的过程中,我忽略了与轴有关的任何内容。