从解析html中无法获取下标文本

时间:2016-11-24 14:54:31

标签: html swift parsing xpath subscript

我正在解析一个无机化合物的网站,需要得到它的化学式。

let data = NSData(contentsOf: URL(string: "https://en.wikipedia.org/wiki/Gold(III)_bromide")!)
let doc = TFHpple(htmlData: data as! Data)

if let elements = doc?.search(withXPathQuery: "//*[@class='selflink']/text()") as? [TFHppleElement] {
    for element in elements {
        print("------")
        print(element.content)
    }
}

打印出“AuBr”但我需要它来打印整个公式,即“AuBr 3

这是我从以下公式获得的html代码:

enter image description here

如何用最后的3打印整个公式?

2 个答案:

答案 0 :(得分:1)

从Wiki页面获取以下HTML:

<tr>
  <td>
    <div style="padding:0.1em 0;line-height:1.2em;"><a href="/wiki/Chemical_formula" title="Chemical formula">Chemical formula</a></div>
  </td>
  <td>AuBr<sub>3</sub></td>
</tr>

以下XPath表达式

string(//tr[td[1]/div/a = "Chemical formula"]/td[2])

将返回:

> xmllint --xpath 'string(//tr[td[1]/div/a = "Chemical formula"]/td[2])' ~/test.html
AuBr3

答案 1 :(得分:0)

尝试SwiftSoup

解析你的HTML:

let document = try SwiftSoup.parse("<li><strong class='selflink'>AuBr<sub>3</sub></strong></li>")

let selflinkElements = try document.getElementsByClass("selflink")

print(selflinkElements.get(0).tagName())//print "strong"

print(selflinkElements.get(0).text())//print "AuBr3"

print(selflinkElements.get(0).html())//print "AuBr<sub>3</sub>"