2016-03-24 46 views
1

我目前有一个html文件,我需要某些文本,并且我安装了Fuzi来帮助我解析html。 html文件的一部分,我需要抓住从看起来像这样的文字:使用Fuzi使用swift从特定标记中获取文本

<pre class="lyric-body" onclick="location.href='SOME_URL_HERE';"> 
THE TEXT THAT I NEED TO GET IS IN HERE 
</pre> 

而我已经设置了开始解析HTML:

if let myString = String(data: data!, encoding: usedEncoding) { 
    do { 
     let doc = try HTMLDocument(string: HTML_FILE, encoding: NSUTF8StringEncoding) 

     for lyric in doc.xpath("//pre/@class") { 
       print(lyric) 
     } 

    } catch let error { 
     print(error) 
    } 
} else { 
    print("failed to decode data") 
} 

目前这会打印:

class="lyric-body" 

我已经尝试阅读Fuzi文档,但没有任何,我似乎尝试返回任何类似于我需要的文本。

回答

2

您的XPath不正确,您正在提取class属性。如果您想提取<pre>标签中的文字,则需要使用"//pre[@class='lyric-body']"。如果你想获得里面的文字直接就可以使用"//pre[@class='lyric-body']\text()"

至于附子对CSS选择器可以使用过下面的代码与类"lyric-body"来获取元素的支持:

for link in doc.css(".lyric-body") { 
    // print stringValue or anything you need  
} 

希望这对你有帮助

相关问题