我目前有一个 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/