我目前有一个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文档,但我似乎没有尝试任何类似于我需要的文本。
答案 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
}
我希望这可以帮到你