【问题标题】:XPath not working properly in SwiftXPath 在 Swift 中无法正常工作
【发布时间】:2016-02-13 15:12:11
【问题描述】:

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

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

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

Swift 代码:

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");

        }

    }


}

【问题讨论】:

  • 上面的代码对我来说适用于一个简单的 HTML 页面。您能否发布失败的 HTML 页面的源代码?
  • 嗨,这是一个示例站点:roosters.roc-teraa.nl/rooster_uitwisseling/… 如果您使用 XPATH:/html/body 它会显示所有数据,但如果您更进一步,例如 /html/body/table[1]/tbody/ tr[14] swift 中不显示任何内容。

标签: ios xcode swift xpath


【解决方案1】:

只需从 XPath 中删除 tbody/ 段。您发布的链接的来源没有<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 代码。

【讨论】:

    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多