Eu estou escrevendo um aplicativo no Swift 3.0 e eu estou tentando raspar dados dos resultados da pesquisa de uma página da Web. Eu realizo a pesquisa incluindo a consulta de pesquisa como um parâmetro na url, mas o html que está sendo retornado para mim não tem resultados. Acredito que isso seja porque o ajax na página da Web não terminou e preencheu o HTML com os resultados da pesquisa quando o HTML é retornado ao meu aplicativo.
Questão
Como posso esperar que os resultados da pesquisa sejam carregados antes de obter o html?
EDITAR: URL: https://uscdirectory.usc.edu/web/directory/faculty-staff/#basic=a
Esta url realiza uma pesquisa no diretório USC para o caractere "a". O html no meu navegador no meu MacBook inclui estas tags:
<tbody>(Search results are here)</tbody>
mas no meu aplicativo o html que é retornado para mim não tem nada:
<tbody></tbody>
Isso ocorre porque a página da web inicialmente não temresultados da pesquisa e, em seguida, algum tempo depois, o ajax é concluído e o corpo da tabela é preenchido. Como eu uso um objeto URLSessionDataTask no Swift para esperar até que o ajax termine e APENAS ENTÃO me dê o html, de modo que eu realmente obtenha os resultados da pesquisa?
Respostas:
0 para resposta № 1Você pode usar a propriedade ajaxComplete () para corrigir isso.
Ex:
$(document).ajaxComplete(function(){
//your code to render HTML
});
Ele renderizará seu HTML apenas quando a solicitação ajax estiver concluída.
0 para resposta № 2
A solução alternativa que eu criei édesagradável mas funcional. Eu criei um WKWebView fora da tela e carreguei a página em que eu estava interessado. Eu usei um Timer para esperar um número arbitrário de segundos para o javascript na página terminar e então eu recuperei o html da webview