Очистка таблицы HTML до UITableView - PullRequest
0 голосов
/ 06 ноября 2019

Я очищаю веб-сайт с HTML-таблицами. Кто-нибудь знает хороший способ разобрать HTML-код в UITableView Swift с текстом между <br>, являющимся ячейкой, и днем ​​(т. Е. «Вторник 5 ноября») в качестве заголовка раздела?

Хотелось бы, чтобы был API для этих данных. Что если на одной странице было несколько таких таблиц (например, «Вторник 5 ноября», «Среда 6 ноября», «Четверг 7 ноября»)? Есть ли способ обобщить это? Если бы вы могли указать мне правильное направление с библиотекой, это было бы здорово. Я работал с JQuery в прошлом, но пока не очень хорош. Есть ли что-то вроде Jquery for Swift?

Вот код, который у меня пока есть:

import Foundation
let baseUrl = "<url>"
let url = URL(string: baseUrl)!

let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
  guard let data = data else {
    print("data was nil")
    return
  }
  guard let htmlString = String(data: data, encoding: .utf8) else {
    print("couldn't cast data into String")
    return
  }
  print(htmlString)

    let leftSideString = """
    <h3><strong>Tuesday November 5</strong></h3>
    """
    let rightSideString = """
    <h3><strong>Wednesday November 6</strong></h3>
    """

    guard let leftSideRange = htmlString.range(of: leftSideString)
    else {
      print("couldn't find left range")
      return
    }
    guard
      let rightSideRange = htmlString.range(of: rightSideString)
    else {
      print("couldn't find right range")
      return
    }
    let rangeOfTheData = leftSideRange.lowerBound..<rightSideRange.lowerBound
    let valueWeWantToGrab = htmlString[rangeOfTheData]
    print(valueWeWantToGrab) // prints the follower count: 19093
}
task.resume()

Пример того, что возвращается:

<h3><strong>Tuesday November 5</strong></h3>

<table border="1" cellpadding="1" cellspacing="1"><tbody><tr><td>
<p><strong>Breakfast</strong></p>

    <p><strong>Text0<br />
            Text1<br />
            Text2<br />
            Text3<br />
            Text text Text etc<br />
            blah blah<br />
            blah blah <br />
            blah blah                                   <br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah</strong></p>
            </td>
        </tr><tr><td>
            <p><strong>Lunch</strong></p>

            <p><strong>blah blah<br />
            blah blah∆<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah <br />
            blah blah</strong></p>
            </td>
        </tr><tr><td>
            <p><strong>Dinner</strong></p>

            <p><strong>blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah<br />
            blah blah</strong></p>
            </td>
        </tr></tbody></table>

1 Ответ

0 голосов
/ 06 ноября 2019

Разбор HTML-документов - это проблема, которая решается библиотеками, если вы хотите пойти по этому пути. Тот, который я использовал с успехом это SwiftSoup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...