Vue d'ensemble :
Tout grattage d'écran nécessite d'abord un examen manuel de la page dont vous voulez extraire des ressources. Lorsqu'il s'agit d'AJAX, vous devez généralement analyser un peu plus que le simple HTML.
Lorsqu'il s'agit d'AJAX, cela signifie simplement que la valeur que vous voulez n'est pas dans le document HTML initial que vous avez demandé, mais qu'un javascript sera exécuté pour demander au serveur les informations supplémentaires que vous voulez.
Vous pouvez donc généralement analyser simplement le javascript et voir quelle requête le javascript effectue et appeler cette URL à la place dès le début.
Exemple :
Prenons cet exemple, supposons que la page à partir de laquelle vous voulez scraper a le script suivant :
<script type="text/javascript">
function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
xmlHttp.open("GET","time.asp",true);
xmlHttp.send(null);
}
</script>
Il suffit alors d'effectuer à la place une requête HTTP vers time.asp du même serveur. Exemple de w3schools .
Raclage avancé avec C++ :
Pour une utilisation complexe, et si vous utilisez C++, vous pouvez également envisager d'utiliser le moteur javascript de Firefox. SpiderMonkey pour exécuter le javascript sur une page.
Raclage avancé avec Java :
Pour une utilisation complexe, et si vous utilisez Java, vous pouvez également envisager d'utiliser le moteur javascript de firefox pour Java. Rhino
Raclage avancé avec .NET :
Pour une utilisation complexe, et si vous utilisez .Net, vous pouvez également envisager d'utiliser l'assemblage Microsoft.vsa. Récemment remplacé par ICodeCompiler/CodeDOM.