使用Kanna导入我正在使用以下代码解析html:
if let doc = Kanna.HTML(url: NSURL(string: "https://en.wikipedia.org/wiki/Data")!, encoding: NSUTF8StringEncoding) {
// Search for nodes by XPath
for link in doc.xpath("/html/head...") {
primaryDisplay.text!=link.text!
print(link.text)
}
}
}
我想知道如何识别html页面中/上的特定"节点"(不确定这是否是正确的术语)来解析我想要的特定数据......
这是一张图片,展示了我想知道的东西......我想......
答案 0 :(得分:0)
试试这个:
do{
let html = "<!DOCTYPE html>" +
"<html>" +
"<head>" +
"<title>Some webpage</title>" +
"</head>" +
"<body>" +
"<p class='normal'>This is the first paragraph.</p>" +
"<p class='special'><b>this is in bold</b></p>" +
"</body>" +
"</html>";
let doc: Document = try SwiftSoup.parse(html)
let els: Elements = try doc.getElementsByClass("special")
let special: Element? = els.first()//get first element
print(try special?.text())//"this is in bold"
print(special?.tagName())//"p"
print(special?.child(0).tag().getName())//"b"
}catch Exception.Error(let type, let message)
{
print("")
}catch{
print("")
}
答案 1 :(得分:0)
您还应该看看xpath / xquery-这是一种专门用于遍历和查询XML的语言,这使其适用于XHTML和HTML。 XHTML基本上是格式良好的HTML。
假设您的计算机上安装了xpath / xquery解析器,则可以...
XQuery添加了使用类似于SQL的称为FLWOR的语法查询文档的功能。
对于HTML使用此解析器或任何其他解析器的困难在于,通常HTML格式不正确。这意味着每个开始标签都没有结束标签。由于解析器可能无法弄清HTML所隐含的层次结构,因此任何类型的解析都有些粗略。