无法获取下标文本,从解析html
问题描述:
我解析一个网站,无机化合物,并需要得到它的化学公式。无法获取下标文本,从解析html
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 ”
这是HTML代码,我是从得到的公式:
我怎样才能打印出最终的3整个公式?
答
鉴于从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
答
解析你的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>"
谢谢你,这真的工作! – Benja0906
我有一个问题更多,如果HTML是这样的'
@ Benja0906你可以用'CONCAT(//李/ text()[2],// li/sub)'获得' - BaCl2'。我假设你可以弄清楚如何去掉你不想要的前缀。但是这依赖于HTML的确切结构,我不推荐使用它。 – Markus