html - 使用 Fuzi 使用 swift 从特定标签中抓取文本

标签 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 文档,但我似乎没有尝试返回任何与我需要的文本类似的内容。

最佳答案

您的 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      
}

希望对你有帮助

关于html - 使用 Fuzi 使用 swift 从特定标签中抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36209879/

相关文章:

HTML5 推送通知 - 其他推送方式的示例

api - 维基旅行 XML 树结构

postgresql - Postgres CSV 复制语句

javascript - 我怎样才能在鼠标点击坐标的中间而不是左上角绘制我的角色?

html - Outlook(HTML 电子邮件)中最简单的垂直分隔符是什么?

html - 可以在 HTML5 中定义自己的标签吗?

ios - 如何快速地为具有内部类型的协议(protocol)定义类型

ios - 如果无法打开 URL,则显示警报

objective-c - Objective-C 类可以符合 swift 协议(protocol)吗?

c# - 如何在 Irony.NET 中允许重复