首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SwiftSoup快速到达多个类来解析HTML文件

使用SwiftSoup快速到达多个类来解析HTML文件
EN

Stack Overflow用户
提问于 2018-10-26 13:28:06
回答 1查看 727关注 0票数 0

我正在解析一个HTML站点。(使用迅捷汤cocoapods)我使用getElementByClass方法使用类访问数据。

代码语言:javascript
复制
struct OddResponse {

let odds: [Odd]

init(_ innerHTML: Any?) throws {
guard let htmlString = innerHTML as? String else { throw
    HTMLError.badInnerHTML }

let doc = try SwiftSoup.parse(htmlString)
let leagues = try doc.getElementsByClass("league").array()
let times = try doc.getElementsByClass("time").array()
let hometeams = try doc.getElementsByClass("homeTeam").array()
let awayteams = try doc.getElementsByClass("awayTeam").array()
let dropprimaries = try doc.getElementsByClass("drop primary").array()

let odd1highdrops = try doc.getElementsByClass("odds-dropping drop-high").array()
let odd2highdrops = try doc.getElementsByClass("odds-dropping drop-high").array()

    var odds = [Odd]()
    for i in 0..<times.count {
        let league = try leagues[i].text()
        let time = try times[i].text()

        let odd1highdrop = try odd1highdrops[i].text()
        let odd2highdrop = try odd2highdrops[i].text()

        print(odd1highdrop)
        print(odd2highdrop)

        let odd = Odd(league: league, time: time, odd1highdrop: odd1highdrop, odd2highdrop: odd2highdrop)
        odds.append(odd)
    }
    self.odds = odds
}

但在我的例子中,HTML正在发生变化。因此,“概率下降”的类名可以在每分钟更新。我怎样才能到达孩子班或家长的迅速。有人知道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 07:08:53

从问题中摘录:

这对我来说是完美的。

代码语言:javascript
复制
struct OddResponse {

let odds: [Odd]

init(_ innerHTML: Any?) throws {
    guard let htmlString = innerHTML as? String else { throw
        HTMLError.badInnerHTML }


    var odds = [Odd]()
    let doc = try SwiftSoup.parse(htmlString)
    if let body = try doc.getElementsByClass("tablesorter tablesorter-default hasStickyHeaders").last()?.getElementsByTag("tbody").first() {
        for tr in body.children() {

            let league = try tr.getElementsByClass("league").first()!.text()
            let time = try tr.getElementsByClass("time").first()!.text()

            var otherOdd1dropping = ""
            var odd1dropping = ""
            var oddDroppingType = 0

            if let node = try tr.getElementsByClass("odds odds-1 odds-dropping").first() {
                odd1dropping = try node.text()
            }else if let node = try tr.getElementsByClass("odds odds-1 odds-dropping drop-medium").first() {
                otherOdd1dropping = try node.text()
                oddDroppingType = 1
            }else{
                otherOdd1dropping = try tr.getElementsByClass("odds odds-1 odds-dropping drop-high").first()!.text()
                oddDroppingType = 2
            }

            let odd = Odd(league: league, time: time, odd1dropping: odd1dropping, otherOdd1dropping: otherOdd1dropping, oddDroppingType: oddDroppingType)
            odds.append(odd)
        }
    }
    self.odds = odds
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53009851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档