J'aimerais récupérer le contenu d'une page, mais celle-ci contenant de l'ajax, les données ne sont pas encore chargées lorsque je récupère ma page avec cURL. Comment pourrais-je y remédier?
J'aimerais récupérer le contenu d'une page, mais celle-ci contenant de l'ajax, les données ne sont pas encore chargées lorsque je récupère ma page avec cURL. Comment pourrais-je y remédier?
Il faut alors utiliser un moteur JavaScript, comme V8 ou JavaScriptCore (WebKit), pour exécuter le code JS contenu dans la page. Il me semble qu'il y a plus facile, mais ça dépend de la page : si l'AJAX sert uniquement à charger une autre page web, tu la charges indépendamment, puis tu mets son contenu au bon endroti dans la page.
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Voici un exemple avec la vente des billets sur ce site: http://www.ticketnet.fr/shop/fr/mani...8&idtier=78768
Les nombres de places disponibles sont chargés via une fonction javascript utilisant ajax:
J'aimerais pouvoir récupérer les places disponibles quand je récupère ma page, pour celà, il faudrait attendre que la fonction ait fini de charger les données. Mais je ne sais pas comment faire ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174 function afficher_liste_CatTarif(idmanif,Idseance,idlieu,lieuZon,NbBill,genre,ManifIsCache, manif_retraitTicket,filtre_pays){ message='<BR><table><tr><td valign="middle" align="center"><img src="/Assets/load.gif"></td>' message+='<td> </td><td valign="middle" align="center">Merci de patienter pendant le chargement des tarifs </td>' message+='<tr></table><BR><BR>' document.getElementById('tabCatTarif').innerHTML = message; getxhr_catTarif(); // On défini ce qu'on va faire quand on aura la réponse xhr_catTarif.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr_catTarif.readyState == 4 && xhr_catTarif.status == 200){ sIdSeance = ""; resultat = xhr_catTarif.responseText; if((resultat.indexOf("ValideAfficheSeance=\"1\"", 0 ) >= 0) || (bRechercheSeance == false) || (sIdSeance != "")){ bRechercheSeance = false; //changement au chargement de la page seulement puis toujours à true pour le changement manuel } else { //seance épuisée passage à la suivante var tblSeances = document.getElementById('IdSeancSel').getElementsByTagName('option'); iNumSeance += 1; if (iNumSeance < tblSeances.length){ tblSeances[iNumSeance].selected = true; afficher_liste_CatTarif(idmanif,tblSeances[iNumSeance].value,idlieu,lieuZon,NbBill,genre,ManifIsCache, manif_retraitTicket,filtre_pays); } else{ //dans le cas de fin de boucle donc fin de chargement bRechercheSeance = false; } } //affichage seance if(bRechercheSeance == false){ // Chargement de la liste à réception des données document.getElementById('tabCatTarif').innerHTML = resultat; if (document.getElementById('msg_tarif_pref')){ if (document.getElementById('aff_msg_tarif_pref').value=="true"){ document.getElementById('msg_tarif_pref').style.display = 'block'; }else{ document.getElementById('msg_tarif_pref').style.display = 'none'; } } if (document.getElementById('LibLstZonETick')){ if (document.getElementById('aff_LibLstZonETick').value!="" ) { document.getElementById('LibLstZonETick').style.display = 'block'; document.getElementById('val_LibLstZonETick').innerHTML = "Cette manifestation propose l'édition chez soi des billets en catégorie "+document.getElementById('aff_LibLstZonETick').value+"." }else{ document.getElementById('LibLstZonETick').style.display = 'none'; document.getElementById('val_LibLstZonETick').innerHTML=''; } } if (document.getElementById('MessETicket')){ if (document.getElementById('aff_MessETicket').value=="true") { document.getElementById('MessETicket').style.display = 'block'; document.getElementById('LibLstZonETick_logo').style.display = 'block'; setrightcolumn(true) } else { document.getElementById('MessETicket').style.display = 'none'; document.getElementById('LibLstZonETick_logo').style.display = 'none'; setrightcolumn(false) } } if (document.getElementById('MessEpuisse')){ if (document.getElementById('aff_MessEpuisse').value=="true") { document.getElementById('MessEpuisse').style.display = 'block'; } else { document.getElementById('MessEpuisse').style.display = 'none'; } } if (document.getElementById('MessAutomatique') ){ if (document.getElementById('aff_MessAutomatique').value=="true") { document.getElementById('MessAutomatique').style.display = 'block'; } else { document.getElementById('MessAutomatique').style.display = 'none'; } } if (document.getElementById('MessClub1')){ if (document.getElementById('MessClub1') &&(document.getElementById('aff_MessClub1').value=="true")) { document.getElementById('MessClub1').style.display = 'block'; } else { document.getElementById('MessClub1').style.display = 'none'; } } if (document.getElementById('MessClub2')) { if ((document.getElementById('aff_MessClub2').value=="true")) { document.getElementById('MessClub2').style.display = 'block'; } else { document.getElementById('MessClub2').style.display = 'none'; } } if ((document.getElementById('aff_ImagePlan').value=="false")) { AffichePlanFlash(""); } else { AffichePlanFlash(document.getElementById('imagePlan_Ajax').src); } //filtrage pas IP localisation var utilisateurPays = "FR"; var utilisateurIdentifie = ""; var codePays = "FR"; var IPPays = ""; //alert(utilisateurPays); //alert(ident); //alert(codePays); if (filtre_pays == "Oui") { if(google.loader.ClientLocation) { var visitor_countrycode = google.loader.ClientLocation.address.country_code; if(visitor_countrycode != "") { if(codePays.toLowerCase() != visitor_countrycode.toLowerCase() || "" != "" && "" != "" && utilisateurPays.toLowerCase() != visitor_countrycode.toLowerCase() || "" == "Oui" && IPPays.toLowerCase() != visitor_countrycode.toLowerCase() || "" != "" && "" != "" && utilisateurPays.toLowerCase() != codePays.toLowerCase()) { if(document.getElementById('FormReservation')) { document.getElementById('FormReservation').onsubmit = ''; document.getElementById('FormReservation').action = ''; sFormReservation = "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\"><tr><td bgcolor=\"#ff000\" align=\"center\"><font face=\"Arial, Helvetica, sans-serif\" color=\"#ffffff\" size=\"2\">"; sFormReservation += "Nous sommes désolés mais l'offre est accessible uniquement aux internautes résidant<br>sur le territoire où se déroule l'événement.</font></td></tr></table>"; document.getElementById('FormReservation').innerHTML = sFormReservation; } } } } document.getElementById('FormReservation').innerHTML += '<input type=hidden name="filtrePays" value="' + filtre_pays + '" ID="HiddenPays">'; } } //alert(leselect); } } // créer une variable qui change tout le temps , exemple la date et heure // et le passer dans l'url // afin d'éviter d'avoir des problèmes de cache nom_objet = new Date(); datebidon = nom_objet.getTime(); // appel à la page xt_filtre_manif.asp pour récupérer les données xhr_catTarif.open("get","xt_filtre_manif.asp?idmanif="+idmanif+"&Idseance="+Idseance+"&idlieu="+idlieu+"&lieuZon="+lieuZon+"&NbBill="+NbBill+"&genre="+genre+"&ManifIsCache="+ManifIsCache +"&ticket="+manif_retraitTicket + "&d="+datebidon,true); xhr_catTarif.send(null); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager