【问题标题】:How can I traverse HTML DOM with Swift如何使用 Swift 遍历 HTML DOM
【发布时间】:2021-09-01 14:33:09
【问题描述】:

我收到了一个 HTML 格式的 http POST 响应。现在我想在我的视图控制器中显示结果。如何解析响应的 DOM 以获得我想要的元素?

这是原始 html 中的响应:

<tr>
  <td style="text-align:center;">1</td>
  <td>9.99</td>
  <td style="text-align:center;" class="show_on_masters hide"></td>
  <td style="text-align:center;">1.4</td>
  <td><a href="https://athletics.ca/wp-content/themes/default-bs3/popups/athlete-rankings.php?id=9487257&year=2021" class="fancybox" data-fancybox-type="iframe">DE GRASSE, ANDRE</a></td>
  <td style="text-align:center;">ON</td>
  <td>
    <div data-tooltip="Speed Academy Athletics Club"><a href="http://www.speedacademy.ca" target="_blank">SAAC</a></div>
  </td>
  <td>94</td>
  <td><a href="https://www.tfrrs.org/results/68975/UF_Tom_Jones_Invitational/" target="_blank">2</a></td>
  <!--<td class="rankings_hide_992">UF Tom Jones Invitational (Olympic Development)</td>-->
  <!--<td class="rankings_hide_768">Gainesville , FL</td>-->
  <td>
    <div data-tooltip="UF Tom Jones Invitational (Olympic Development)" style="cursor:default;">Gainesville , FL</div>
  </td>
  <td>17/04/2021</td>
</tr>
<tr>
  <td style="text-align:center;">2</td>
  <td>10.08</td>
  <td style="text-align:center;" class="show_on_masters hide"></td>
  <td style="text-align:center;">1.9</td>
  <td><a href="https://athletics.ca/wp-content/themes/default-bs3/popups/athlete-rankings.php?id=9256053&year=2021" class="fancybox" data-fancybox-type="iframe">BROWN, AARON</a></td>
  <td style="text-align:center;">ON</td>
  <td>
    <div data-tooltip="Phoenix Athletics Assoc. of Ontario"><a href="http://phoenixathletics.ca" target="_blank">PHNX</a></div>
  </td>
  <td>92</td>
  <td><a href="http://live.halfmiletiming.com/meets/294/events" target="_blank">7</a></td>
  <!--<td class="rankings_hide_992">World Athletics - Miramar</td>-->
  <!--<td class="rankings_hide_768">Miramar, FL</td>-->
  <td>
    <div data-tooltip="World Athletics - Miramar" style="cursor:default;">Miramar, FL</div>
  </td>
  <td>10/04/2021</td>
</tr>
<tr>
  <td style="text-align:center;">3</td>
  <td>10.14</td>
  <td style="text-align:center;" class="show_on_masters hide"></td>
  <td style="text-align:center;">0.7</td>
  <td><a href="https://athletics.ca/wp-content/themes/default-bs3/popups/athlete-rankings.php?id=8989428&year=2021" class="fancybox" data-fancybox-type="iframe">WARNER, DAMIAN</a></td>
  <td style="text-align:center;">ON</td>
  <td>
    <div data-tooltip="London Western T.F.C."><a href="http://www.londonwesterntfc.com/" target="_blank">LWTF</a></div>
  </td>
  <td>89</td>
  <td><a href="https://www.worldathletics.org/competition/calendar-results/results/7155327" target="_blank">1dec5</a></td>
  <!--<td class="rankings_hide_992">Hypo-Meeting</td>-->
  <!--<td class="rankings_hide_768">Götzis, AUT</td>-->
  <td>
    <div data-tooltip="Hypo-Meeting" style="cursor:default;">Götzis, AUT</div>
  </td>
  <td>29/05/2021</td>
</tr>

我目前正在尝试使用基于几个教程的 HTMLKit,但我无法使用这个库真正遍历 DOM。有什么想法吗?

HTMLKit Tutorial

HTMLKit Video Tutorial

【问题讨论】:

    标签: html ios swift xcode dom


    【解决方案1】:

    你可以试试SwiftSoup允许HTML解析的库。

    用法

    do {
        let html: String = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
        let doc: Document = try SwiftSoup.parse(html)
        let link: Element = try doc.select("a").first()!
        
        let text: String = try doc.body()!.text(); // "An example link"
        let linkHref: String = try link.attr("href"); // "http://example.com/"
        let linkText: String = try link.text(); // "example""
        
        let linkOuterH: String = try link.outerHtml(); // "<a href="http://example.com"><b>example</b></a>"
        let linkInnerH: String = try link.html(); // "<b>example</b>"
    } catch Exception.Error(let type, let message) {
        print(message)
    } catch {
        print("error")
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-20
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2014-01-09
      • 1970-01-01
      • 2011-06-20
      相关资源
      最近更新 更多