如何解决Swift-从HTML获取数据
通过基于Swift 5.0的iOS应用从网站获取某些数据时,我遇到了挑战。
首先,我们在后台填写并提交表单,然后网站显示一些数据,我们希望将这些数据放入应用程序中的单独值中(以供以后在标签,tableView等中使用。
我们将内部HTML作为这样的字符串获取:
webView.evaluateJavaScript("document.getElementsByTagName('html')[0].innerHTML")
结果字符串包含我需要的所有数据,但是我在提取它时遇到了麻烦。
我要查找的值是这样排列的(我要提取标记为“ keyName”和“ valueName”的数据(以下是“ key”和“ value”类):
<div class="box">
<div class="notrequired keyvalue singleDouble">
<span class="key">keyName:</span>
<span class="value">valueName</span>
</div>
<div class="notrequired keyvalue singleDouble">
<span class="key">keyName:</span>
<span class="value">valueName</span>
</div>
<div class="notrequired keyvalue singleDouble">
<span class="key">keyName:</span>
<span class="value">valueName</span>
</div>
<div class="notrequired keyvalue singleDouble">
<span class="key">keyName:</span>
<span class="value">valueName</span>
</div>
</div>
有人知道我如何获得KEY和VALUE吗?
谢谢。
解决方法
您可以检查此库SwiftSoup 这个答案可能会很有帮助How to parse html table data to array of string in swift?
希望它会有所帮助。看来这是您的情况!
,使用正则表达式捕获class="value">
和<
之间的字符串非常容易,htmlString
代表提取的HTML字符串。结果是一个字符串数组
let regex = try! NSRegularExpression(pattern: "class=\"value\">([^<]+)<")
let values = regex.matches(in: htmlString,range: NSRange(htmlString.startIndex...,in: htmlString))
.map{ String(htmlString[Range($0.range(at:1),in: htmlString)!]) }
print(values)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。