【发布时间】:2015-07-20 09:40:30
【问题描述】:
有没有办法在 Swift 或至少 Obj-C 中从网页中检索 div 内容?我在下图中选择了我希望检索的那个。它是动态的(彩票结果),所以它必须是一个 URL。
请告知是否有允许这种操作的教程或方法。我自己找不到。
【问题讨论】:
有没有办法在 Swift 或至少 Obj-C 中从网页中检索 div 内容?我在下图中选择了我希望检索的那个。它是动态的(彩票结果),所以它必须是一个 URL。
请告知是否有允许这种操作的教程或方法。我自己找不到。
【问题讨论】:
获取内容
首先,您需要下载该页面的内容,以便可以像处理本地数据一样使用它。为此,请参阅 SO 上的following post,因为它会让您清楚地了解如何操作
我用 objc 为不同的站点编写了多个爬虫。并且迅速,并且为了您的目的,有更多的解决方案,其中一些比其他的更困难,通常取决于远程服务器的配置 - 但对于您想要做的事情,我强烈建议您使用TFHpple library。
TFHpple
配置完成后,它允许您使用XPath 遍历已解析的html / xml。来自 W3C 网站:
XPath 是一种用于定义 XML 文档部分的语法
基本上,您不必遍历某个非常长且动态的对象树,而只需定义“规则”如何使用单行符号找到它,其余的是适合该角色的节点组。
假设您想在页面上找到符合 class="myClass" 规则的所有链接,您可以这样使用它:
let data = NSData(contentsOfFile: "page.html")
let document = TFHpple(HTMLData: data)
let elements = doc.search("//a[@class='myClass']")
然后,在元素数组中,您可以找到所有结果作为具有更多信息的节点以及包含的子节点。
人人都喜欢简单
如果您不想学习如何使用 XPath,有一个非常简单的解决方案。通过谷歌浏览器浏览页面时,打开开发者控制台(Ctrl[win] / Cmd[mac] + Shift + C)并在“元素”浏览器中寻找你感兴趣的标签。然后,单击右键并选择复制 XPath。在您的解析器中使用该 XPath,并从中受益 :) Here is the screenshot 它的实际外观。
祝你好运!
【讨论】: