我正在努力从我的xPathQuery中获取任何信息。我使用Chrome的开发者工具获得的链接,通过右键单击附加截图中突出显示的行来完成。我正在创建一个基于食谱的应用程序,在我尝试扩展它之前,我只是在玩单个URL#s。非常感谢帮助!
override func viewDidLoad() {
super.viewDidLoad()
let url=NSURL(string:"http://www.bbc.co.uk/food/recipes/roast_shoulder_of_lamb_92545")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
if error == nil {
var parser = TFHpple(HTMLData: data)
var xPString = "/html/body/table/tbody/tr[186]/td[2]/span[3]"
var nodes = parser.searchWithXPathQuery(xPString) as? [TFHppleElement]
println(nodes)
}
})
task.resume()
}
答案 0 :(得分:0)
尝试从
重命名以下行var nodes = tutorialParser.searchWithXPathQuery(xPString) as? [TFHppleElement]
到
var nodes = parser.searchWithXPathQuery(xPString) as? [TFHppleElement]
修改1
我刚刚看了你试图解析的url中的html代码...我用safaris开发工具搜索子字符串“tbody”...似乎没有定义“tbody” html,所以你的解析器将无法找到它,也许会给你一个空数组,就像他现在这样做...
你可以尝试在你的xPString中没有“tbody”进行搜索吗?
所以从
开始var xPString = "/html/body/table/tbody/tr[186]/td[2]/span[3]"
到
var xPString = "/html/body/table/tr[186]/td[2]/span[3]"
表中还有第186个tr标签吗?这个tr中的第二个td和这个td中的3个跨度?
修改2
好的,这是你的解析器......
https://gist.github.com/DennisWeidmann/27ea76b5aed4718cf4ce
这是一个用法示例