我想知道你是否可以帮助我。我正在尝试使用TFHpple
来使用Swift 1.2解析HTML数据,但是我在解决XPath表达式方面遇到了问题。我收到以下错误:
可选(https://www.rac.co.uk/buying-a-car/car-passport/report/buyer/purchase/?BuyerVrm=yg06dxt)
XPath错误:表达式无效
// td [@ class ='CarMiniProfile-TableHeader'] / tdXPath错误:表达式无效 // TD [@类=“CarMiniProfile-的tableHeader”] / TD
2016-03-01 16:26:23.645 CarCamera [1974:63769]无法评估XPath。 空节点!!
我尝试使用的XPath代码是
var XPathString = "//td[@class=‘CarMiniProfile-TableHeader’]/td"
我想要获得的信息是输入的汽车的make
和model
。
<div>
<table class="CarMiniProfile-table">
<tbody>
<tr class="CarMiniProfile-tableFirstRow">
<td class="CarMiniProfile-tableHeader">
Make
</td>
<td>
FIAT
</td>
</tr>
<tr>
<td class="CarMiniProfile-tableHeader">
Model
</td>
<td>
PUNTO SPORTING M-JET
</td>
</tr>
<tr>
<td class="CarMiniProfile-tableHeader">
Colour
</td>
<td>
BLUE
</td>
</tr>
<tr>
<td class="CarMiniProfile-tableHeader">
Year
</td>
<td>
2006
</td>
</tr>
<tr>
<td class="CarMiniProfile-tableHeader">
Engine Size
</td>
<td>
1910 cc
</td>
</tr>
</tbody>
</table>
</div>
Swift代码:
var newURL = NSURL(string: "https://www.rac.co.uk/buying-a-car/car-passport/report/buyer/purchase/?BuyerVrm=\(numberplate)")
var htmlData: NSData = NSData(contentsOfURL: newURL!)!
var Parser = TFHpple(HTMLData: htmlData)
var XPathString = "//td[@class=‘CarMiniProfile-TableHeader’]/td"
var nodes = Parser.searchWithXPathQuery(XPathString) as NSArray
if(nodes.count == 0 ){
println("empty nodes!!")
}else{
for element in nodes
{
println(element.content)
}
}
答案 0 :(得分:0)
首先:在你的样本中你有:
<td class="CarMiniProfile-tableHeader">
但你正在查询
//td[@class=‘CarMiniProfile-TableHeader’]
(请注意TableHeader中的大写&#39; T&#39;)。 xpath区分大小写。
第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你有一个&#39; td&#39;元素里面外部的td,而他们是兄弟姐妹。
有很多方法可以在这里获得制作和模型