Swift 2解析HTML并查找特定节点
使用Kanna导入,我目前正在使用以下代码解析html:Swift 2解析HTML并查找特定节点,swift,swift2,Swift,Swift2,使用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...") { prima
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页面中/上识别特定的“节点”(不确定这是否是正确的术语),以解析我想要的特定数据
这是一张我想知道的图片。。。我想
一个简单的方法就是使用 试试这个:
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("")
}
do{
让html=“”+
"" +
"" +
“一些网页”+
"" +
"" +
“这是第一段。”+
“这是粗体的
”+
"" +
"";
let doc:Document=try swifsoup.parse(html)
让els:Elements=try doc.getElementsByClass(“特殊”)
let special:Element?=els.first()//获取第一个元素
打印(请尝试特殊?.text())/“此为粗体”
打印(特殊?.tagName())/“p”
打印(特殊?.child(0.tag().getName())/“b”
}捕获异常。错误(let类型,let消息)
{
打印(“”)
}抓住{
打印(“”)
}
您还应该看看xpath/xquery——它是一种专门用于遍历和查询XML的语言,因此适用于XHTML和HTML。XHTML基本上是格式良好的HTML
假设您的计算机上安装了xpath/xquery解析器,您可以
- 获取文档中所有p元素的列表://p
- 获取类为“special”的所有p元素的列表://p[@class='special']
对html使用此解析器或任何其他解析器的困难在于,html的格式通常不好。这意味着每个开始标记都没有结束标记。这使得任何类型的解析都有些粗略,因为解析器可能无法理解HTML隐含的层次结构。我不建议您解析您不拥有的HTML。因为它可以随时更改,解析器将返回nil@Anton这在短期内不应该是一个问题,但谢谢你的建议。@Anton如果你写得好,那就没有问题了problem@OP我没有得到你想要的。。。哪些节点?只是某种类型的?您已经有了xpath。问题是什么?抱歉,我正在尝试获取更具体的xpath。。。因此,问题实际上是询问swift中特定xpath的示例