ios - XPath 在 Swift 中无法正常工作

标签 ios xcode swift xpath

我正在快速使用 Kanna 从 html 获取数据。

当我使用 Xpath 执行“html/body”时,我会从站点获取正文中的所有内容。

当我执行“/html/body/center/table[1]/tbody/tr[1]”时,我什么也没得到,但是当我使用 xpath 测试器并填写“/html/body/center/table[ 1]/tbody/tr[1]"我得到数据。

快速代码:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    if let doc = Kanna.HTML(url: (NSURL(string: "URL")!), encoding: NSUTF8StringEncoding) {
        print(doc.title);

        for link in doc.xpath("/html/body/center/table[1]/tbody/tr[1]") {
            print(link.text)
           // print(link["href"])
            // print("test");

        }

    }


}

最佳答案

只需删除 tbody/来自你的 XPath 的片段。您发布的链接的来源没有<tbody>元素:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>Klasrooster, van 15-02-2016 t/m 15-04-2016</title>
<meta name=generator content="Paralax Rostar Eduflex Versie 3.508">
<!-- Dit bestand is automagisch aangemaakt. Handmatige wijzigingen kunnen verloren gaan. -->
<style type=text/css>
<!-- 
body, th, td { font-family: arial, verdana, geneva, times, helvetica,  courier; font-size: 8pt; }
-->
</style>
</head><body><table border="1" width="100%">
<tr><th>Klasrooster, van 15-02-2016 t/m 15-04-2016</th></tr>
<tr><td><a href="2P02025.htm">TT.12MB.b</a></td></tr>
<tr><td><a href="2P02002.htm">TT.12ME.a</a></td></tr>

<!-- skipping many rows -->

<tr><td><a href="2P02202.htm">TT.RES2</a></td></tr>
<tr><td><a href="2P02038.htm">TT.RES3</a></td></tr>
</table>
<!-- XREF START -->
<table border="0" width="100%"><tr><td>[Vorige periode]</td><td><a href="../../index.htm">Overzichtspagina</a></td><td>[Volgende periode]</td></tr></table>
<!-- XREF END -->
</body></html>

我怀疑您正在使用 Firefox 或 Chrome 的“检查”功能来查看您正在解析的页面的 HTML。问题是它显示了浏览器的 DOM 模型——而不是原始来源。使用“查看源代码”功能查看原始 HTML 代码。

关于ios - XPath 在 Swift 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381499/

相关文章:

ios - 一个 TableView 中的多个按钮

添加 UINavigationBar 时 Swift 约束错误

ios - 密码字段的键盘仅在 iOS 12 上从 azerty 切换到 qwerty(有时)

swift - 解码器是否需要具有 key 的外部数据表示?

ios - 如何为 Mac OS X 创建苹果邮件插件

ios - 如何在 iOS 8 中测试 http 请求?

ios - 在 iOS 设备上从 BLE 获取制造商数据

ios - 绘制圆线iOS Swift

iPhone模拟器失败

swift - str = str + "abc"比 str = "abc"+ str 慢?