使用Fuzi使用swift从特定标签中获取文本

时间:2016-03-24 20:58:29

标签: html swift parsing

我目前有一个html文件,我需要某些文本,我安装了Fuzi来帮助我解析html。我需要抓取文本的部分html文件如下所示:

<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文档,但我似乎没有尝试任何类似于我需要的文本。

1 个答案:

答案 0 :(得分:3)

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

由于Fuzi支持CSS选择器,您也可以使用以下代码来获取类"lyric-body"的元素:

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

我希望这可以帮到你