在使用TFHpple解析此HTML数据后,为什么我没有获得任何数据

时间:2015-08-03 17:36:10

标签: html swift parsing xpath tfhpple

我正在努力从我的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()


}

1 个答案:

答案 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

这是一个用法示例

https://gist.github.com/DennisWeidmann/a66ce53ad8691744d6a6

相关问题