Récupération de données "dynamiques" dans une page Web

Le problème exposé dans ce sujet a été résolu.

Salut tous le monde :)

J'ai une question Web pour vous, et je suis sûr que vous allez pouvoir m'aider :)

Je cherche à récupérer une valeur dynamique sur une page web. Je m'explique:

  • Si je fais afficher le code source avec mon navigateur préféré, cette valeur est mise à 00
  • Si je fais inspecter l'élément, alors là, on voit que la valeur change toute les 2 secondes.

Je voudrais récupérer cette valeur mais la fonction PHP "file_get_contents()" me retourne la même chose qu'un coup de "afficher le code source". Donc je voulais savoir si vous aviez une idée pour extraire cette valeur ?

Merci d'avance pour vos réponses ;)

+0 -0

Mmh, j'ai fais pas mal de recherche autour de ses fichiers javascript, en effet c'est bien içi que la valeur est modifié sous-forme d'une variable.

Mais je ne pourrais pas la récupérer par ce biais … Ou alors je me trompe ?

+0 -0

Victor: Je ne sais pas, apparemment la variable qui semble correspondre est déclaré dans le javascript .. Mais j'ai jamais touché au JSON donc je vois pas trop ce que tu entend par "tu dois pouvoir récupérer la valeur directement depuis là"

rom1504: "La procédure" ? C'est à dire ?

Ça va être compliqué de te répondre plus précisément sans plus de détail sur le js en question, mais par exemple s'il y a var a=2+3; il te suffit de faire 2+3 dans ton code pour obtenir la valeur (en vrai ce sera plus compliqué que 2+3, enfin j'espère…)

Non, c'est un calcul réalisé à partir de l'heure du serveur sur lequel la page est hébergée.

Mais y a aucun moyen de lire une variable qui s'affiche ? Si elle s'affiche sur ma page web, je dois bien pouvoir la récupérer d'une façon où d'une autre non ?

Pour être clair : tu fais une requête à un serveur distant (GET http://lesite.com/lapage), ton navigateur et file_get_contents font exactement la même chose.

Le serveur distant te renvoie une page HTML, à partir de là, son boulot est terminé.

Dans ce fichier HTML, il y a un monceau de code JS qui, lui, doit être exécuté par ton client.

Dans le cas de ton navigateur, le client c'est lui, il passe donc par son moteur Javascript pour interpréter et exécuter le code qu'il trouve dans la page. Potentiellement, il va modifier des "objets" dans la page.

Dans le cas de file_get_contents, bah tu n'as tout simplement pas de client derrière pour interpréter le code JS…

Donc soit :

1/ Tu passes par un moteur de rendu JS (je ne sais pas du tout ce qui existe / se fait en PHP, ça existe en Java)

2/ Tu laisses tomber file_get_contents et tu utilises un navigateur embarqué (selenium ou plein d'autres trucs) qui sache exécuter du code client et te permettre d'inspecter la valeur de cette variable quand tu le souhaites.

3/ Soit tu reproduis le comportement du client par reverse engineering : comment récupère-t-il l'heure du serveur ? (champ Datedu header de la réponse HTTP ? c'est le plus classique. API REST ?) et qu'est-ce-qu'il en fait par la suite ?

Bref, pour t'amener vers la bonne solution il faut qu'on comprenne ce dont tu as besoin de façon précise (comme souvent) parce que là, tout ce qu'on sait c'est que du code JS est exécuté et fait un calcul sur une date. La belle affaire…

+1 -0

Héééé faut pas me disputer :(

Tes éléments de réponses devraient me permettre d'arriver à mes fins, dans l'immédiat, je n'ai pas le temps de me pencher dessus, mais ça m'as l'air d'être de bonnes pistes :)

Si jamais j'ai d'autre questions je repasserais, sinon, je mettrais le post en résolu ;)

Je ne t'ai absolument pas disputé, ne t'en fais pas :)

Ça peut te paraître sec mais c'est juste formel pour pas te paumer. Et par contre oui, c'est difficile de t'aider sans savoir précisément ce que tu veux faire, j'ai jamais trop compris pourquoi pas mal de gens restent très évasifs quand ils posent une question ?

Tu ne peux pas donner l'URL du site en question ? Nous expliquer ce que tu veux faire en détail etc. ? Ça nous permettrait de mieux t'aider :)

+0 -0

Je préférerais évité, d'habitude ça ne me pose pas de problèmes, mais là, c'est un cas un peu sensible :)

Je peux essayer de trouver un exemple par contre ;)

Mais je pense que tu as bien répondu, enfin ça m'as tout l'air d'être le comportement que j'observe ;)

EDIT: J'ai trouvé, c'est exactement le même comportement que j'observe

+0 -0

On va gagner du temps : Ce que tu veux faire ce n'est pas pouvoir détecter quand le compte a rebour d'un site de téléchargement par DirectDownload arrive a terme pour lancer et automatiser le téléchargement d'un liens ?

Si oui il va nous falloir le site d'origine. On a bien compris qu'il a sur ta page un chronometre en javascript, mais il faut voir le code pour savoir ce qui se passe.

NB: Si le temps est fixe ("toujours 30 sec à attendre"), il te suffit d'attendre les 30 sec avec un sleep.

Non je cherche pas à coder mon propre compte à rebours :P

Admettons que je voudrais afficher sur une autre page web (que j'héberge moi même) la valeur du compte à rebours d'une autre page comme celle que j'ai mis en exemple …

Dans l'exemple que je t'ai donné, le compte à rebours est déclenché par le client, mais si celui-ci décompte en permanence, y a t-il un moyen d'afficher sur ma propre page la valeurs des secondes ?

Ce que je comprends pas c'est que la valeur changeant constamment tu veux la récupérer quand ? Enfin si j'ai bien compris le problème …

regz

Tout le temps ? Enfin avec un taux de rafraîchissement le plus rapide possible …

NB: Si le temps est fixe ("toujours 30 sec à attendre"), il te suffit d'attendre les 30 sec avec un sleep.

Kje

Et non, le temps n'est pas "fixe" :/

Je vais sur-simplifier les options qui s'offrent à toi. En gros tu as deux solutions :

  • Soit tu va décortiquer toi même le code js de la page pour savoir ce qui se passe.
  • Soit tu nous dis de quel site il est question pour qu'on puisse réellement t'aider plutôt que spéculer.

C'est l'un ou l'autre. Sans plus de détails il y a beaucoup trop de possibilités pour qu'on puisse t'aider. A toi de voir.

Selon moi, ce que tu cherches à faire ne sera possible que si tu connais la valeur initiale du compte à rebours (puisqu'elle change).

A ce moment, tu lanceras, toi-même ton propre compte à rebours. Ils ne seront pas franchement synchrones mais c'est le mieux que tu puisses espérer.

Sans connaître le site, impossible de connaître cette valeur initiale.

Et très honnêtement, j'ai pas très très envie de jouer aux devinettes avec des "admettons que" :\ On va forcément t'envoyer sur une fausse piste à un moment ou à un autre.

+0 -0

En gros tu veux communiquer des valeurs d'une page client à une autre page client tous simplement ? Est-ce que l'évolution des valeurs est logique (compte à rebours, incrémentation ou meme totues évolution faite par un algo mais sans aucune intervention de l'utilisateur) ou est-ce que l'utilisateur pourrra entraver l'évolution d'un moyen ou d'un autre (rentrer lui meme des valeurs, accélélerer l'évolution si évolution il y a …) ?

J'ai fais pas mal de recherche, je savais que ce domaine avait un nom particulier: Le web scraping. J'ai plus qu'a recherché comment ça se passe pour le JS et voir si y a des outils qui me permettent de faire ça facilement.

Je passe le sujet en résolu !

Merci pour vos réponses, elles m'ont apportées de bonnes pistes de recherches :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte