我正在Swift 3.0中编写一个应用程序,我正在尝试从网页的搜索结果中抓取数据。我通过在网址中包含搜索查询作为参数来执行搜索,但是返回给我的html没有结果。我相信这是因为在html返回我的应用程序时,网页上的ajax还没有完成并用搜索结果填充html。
如何在获取html之前等待搜索结果加载?
修改 网址:https://uscdirectory.usc.edu/web/directory/faculty-staff/#basic=a
此网址在USC目录中搜索字符“a”。我的MacBook浏览器中的html包含以下标签:
<tbody>(Search results are here)</tbody>
但是在我的应用程序中,返回给我的HTML没有任何内容:
<tbody></tbody>
这是因为网页最初没有搜索结果,然后一段时间后ajax结束并填充表体。我如何在Swift中使用URLSessionDataTask对象等待ajax完成,然后才给我html,这样我实际上得到了搜索结果?
答案 0 :(得分:1)
我设计的解决方案解决方案令人不快但功能正常。我创建了一个WKWebView关闭屏幕并加载了我感兴趣的网页。我使用Timer等待一些任意秒数的页面上的javascript完成,然后我从webview中检索html
答案 1 :(得分:0)
您可以使用属性ajaxComplete()来解决此问题。
例如:
$(document).ajaxComplete(function(){
//your code to render HTML
});
仅在ajax请求完成时才会呈现HTML。