如何在网页上的ajax完成后从网址获取html

时间:2017-02-07 04:47:46

标签: html ajax swift web-scraping nsurlsessiondatatask

我正在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,这样我实际上得到了搜索结果?

2 个答案:

答案 0 :(得分:1)

我设计的解决方案解决方案令人不快但功能正常。我创建了一个WKWebView关闭屏幕并加载了我感兴趣的网页。我使用Timer等待一些任意秒数的页面上的javascript完成,然后我从webview中检索html

答案 1 :(得分:0)

您可以使用属性ajaxComplete()来解决此问题。

例如:

$(document).ajaxComplete(function(){
    //your code to render HTML
});

仅在ajax请求完成时才会呈现HTML。