【问题标题】:How to parse html that has the updated DOM? Swift如何解析具有更新 DOM 的 html?迅速
【发布时间】:2021-10-20 18:51:40
【问题描述】:

我非常了解编码和解析来自网站的 html 数据。问题是我在查看网站时可以手动检查的元素与源代码有很大不同。我理解这是因为“检查元素”会在浏览器应用其纠错之后以及任何 Javascript 操作 DOM 之后显示 DOM 树的状态。

以下是相关代码:

import SwiftSoup

        
let url = URL(string: link)

let task = URLSession.shared.dataTask(with: url!) { [self] (data, response, error) in            
    do {
        let htmlContent = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
        let doc: Document = try SwiftSoup.parse(htmlContent! as String)

        let elements = try doc.getAllElements().array()                    
                    
    } catch Exception.Error(type: let type, Message: let message) {
        print(type)
        print(message)
    } catch {
        print("error")
    }
                
}

我的问题是;我可以做些什么来解析手动检查时出现的网站元素?对不起,如果这是一个初学者问题。

【问题讨论】:

  • 为什么这个标签是javascript,你为什么还在用NSString?

标签: javascript swift html-parsing nsurlsessiondatatask swiftsoup


【解决方案1】:

当您在代码中请求页面时,您注意到在浏览器中加载后的网页是不同的。这是因为某些网页会在需要提高性能时“延迟”加载数据或其他 html。

要在代码中获取此 html,您需要在浏览器的开发人员工具中分析网络“XHR”选项卡。您应该可以在那里找到丢失的 html。

【讨论】:

  • 有什么方法可以在我的 Swift 项目中实现这一点吗?是否有任何解析器可以解释这种“延迟加载”?感谢您的帮助!
  • 我不确定会自动执行的操作。它们是对不同 url 的单独请求,因此您必须单独调用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多