gpt4 book ai didi

html - 在 iOS Swift 3 中从 url 解析 HTML 后如何获取表数据

转载 作者:行者123 更新时间:2023-11-28 06:08:49 27 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,我需要在其中从带有 kanna api 的链接解析 html。我已经做了。但它显示了所有的 html 文件。我需要像这样显示一部分数据

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

我在 swift 3 中使用了这部分代码来显示所有 html 数据。

let html = "<html>...</html>"

if let doc = HTML(html: html, encoding: .utf8) {
// Search for nodes by XPath
for link in doc.xpath("//a | //link") {
print(link["href"])
}
}

现在我只想获取 html 数据的表格部分。我该怎么做?

最佳答案

这样就可以了:

    //I replaced " with ' to make it easier. But it shouldn't be a problem in your case.
let html = "<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>"


var infoFromHTML : [[String]] = []

if let doc = try? HTML(html: html, encoding: .utf8) {
var row : [String] = []
//look for td tags, not a or link tags
for (index, td) in doc.css("td").enumerated(){

row.append(td.text as! String)

if index%4 == 3{
//if all row text are added to the row array, append it to info, and reset
infoFromHTML.append(row)
row = []
}
}
}
print(infoFromHTML)

这是你的输出:

    [
["Trip Name ", "Starting Time from Campus ", "Starting Spot & Time ", "Remarks"],
["Normal-1", "6:30 AM ", "Rupsha, 7:20 AM ", "Will back via Royalmore & Ferighat "],
["Normal-1", "6:45 AM ", "Moylapota, 7:25 AM ", "Will back via Shibbari - Sonadangha "]
]

如果你不想使用表格的标题,就假装数组的第一个元素不是0,它是1。

如果我们谈论为什么你不能让它发挥作用;您正在此处寻找 alink 标签 doc.xpath("//a |//link")。但是你有 td 标签。所以你应该这样做:doc.css("td")。我使用了 css 函数,但我也可以使用 XPath。

祝你好运!

编辑:您仍然应该请求 API。最好是 RESTful JSON API。

编辑 2:我使用了 Kanna 的 Swift 4 版本。您可能需要做一些更改才能将其用于 Swift 3。

关于html - 在 iOS Swift 3 中从 url 解析 HTML 后如何获取表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com