Как разобрать данные таблицы HTML в массив строк в Swift?

Я разрабатываю приложение для iOS, в котором мне нужно проанализировать HTML по ссылке с библиотекой swiftsoup. Я сделал это. Но он показывает все данные таблицы в виде строки. Мне нужно получить отдельные данные, которые должны храниться в отдельных массивах.

Вот таблица:

        <table width="880" border="1" cellspacing="0" cellpadding="0">
      <tr>
        <td width="81"><strong>Trip Name </strong></td>
        <td width="159"><div align="center"><strong>Starting Time from Campus </strong></div></td>
        <td width="186"><div align="center"><strong>Starting Spot &amp; Time </strong></div></td>
        <td width="444"><strong>Remarks</strong></td>
      </tr>
      <tr>
        <td><div align="center">Normal-1</div></td>
        <td><div align="center">6:30 AM </div></td>
        <td>Rupsha, 7:20 AM </td>
        <td>Will back via Royalmore &amp; Ferighat  </td>
      </tr>
      <tr>
        <td><div align="center">Normal-1</div></td>
        <td><div align="center">6:45 AM </div></td>
        <td>Moylapota, 7:25 AM </td>
        <td>Will back via Shibbari - Sonadangha </td>
      </tr>


    </table>

И я сделал, чтобы разобрать строку, такую ​​как название поездки, время начала из кампуса, начальная точка и время Примечания Normal-1

Код, который я использовал:

let doc: Document = try! SwiftSoup.parse(html)

for element: Element in try! doc.select("table[width=880]")
{
    let linkText : String = try! element.text();
    print(linkText)
}

Normal-1, 6:30AM, 7:20AM, Вернется через Royalmore & Ferighat, будет храниться 4 отдельных массива.

1 ответ

Решение

Я не уверен, хотите ли вы сохранить его как один массив на строку или один массив на столбец. Вот как вы можете хранить его в стиле "один массив на строку". использование map или другие преобразования массива для преобразования в нужный вам стиль:

var tableContent = [[String]]()
let document = try! SwiftSoup.parse(html)
for row in try! document.select("table[width=\"880\"] tr") {
    var rowContent = [String]()

    for col in try! row.select("td") {
        let colContent = try! col.text()
        rowContent.append(colContent)
    }
    tableContent.append(rowContent)
}

print(tableContent)

(Если вы делаете это в работе, обрабатывайте ошибки правильно, а не все try!)

Другие вопросы по тегам