我正在快速使用 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/