IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Quel module Perl pour récupérer les données des requêtes AJAX ?


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut Quel module Perl pour récupérer les données des requêtes AJAX ?
    Bonjour,

    Mon problème est le suivant :

    Avec un 1er script perl je télécharge des pages html contenant des informations que je récupère ensuite grâce à un 2eme script perl. Le 1er script fonctionne bien dans la mesure où il télécharge toutes les ressources mentionnées dans la page, comme les images, les fichiers css, les fichiers js et autres ressources repérables dans les balises du code html. Je fais grosso modo tout ça avec les modules LWP::UserAgent et WWW::Mechanize.

    Cependant, depuis la présence de plus en plus massive de code javascript dans les pages que l'on télécharge, certaines données que l'on trouve par exemple dans des tables, sont récupérées par l'intermédiaire de requêtes AJAX et ne se retrouvent donc pas dans le code html que je récupère. Du coup, impossible de parser ce code pour y récupérer mes données.

    C'est là que les choses deviennent un peu mystérieuses pour moi.

    En effet, lorsque la page est affichée dans mon navigateur (Firefox), si je sélectionne à la souris le contenu d'une table du style mentionné plus haut, et que je fais Outils/Développeur web/Code source de la page (raccourci CTRL+U), le code correspondant à la sélection apparaît sélectionné dans une nouvelle fenêtre. En le copiant/collant à la main dans un fichier vide d'extension html, on peut voir que les données de la table figurent bien cette fois dans le code html.

    C'est donc ce que je cherche à faire de manière automatique avec un script, mais celui que j'utilise n'est plus trop adapté.

    Mes recherches m'ont conduit dans trop de directions à mon goût.

    Quel module est le plus adapté à ce que je recherche ?

    - WWW::Selenium

    - Selenium::Remote :: Driver

    - Mozilla::Mechanize

    - JavaScript::SpiderMonkey

    Et qu'en est-il des serveurs comme Selenium ou phantomjs à lancer en local pour que tout ça fonctionne.

    En suivant les conseils trouvés sur différents forum, j'ai fait plusieurs essais, mais rien ne marche complètement ?

    J'ai donc besoin des lumières de programmeurs avertis...


    Krys006

  2. #2
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Plus d'une centaine de visites et toujours pas de réponse ! ?

    Je commence à me dire que ma question n'a aucun sens.

    Puisse au moins une personne se manifester pour me le dire, que je puisse fermer cette discussion.

    Merci d'avance.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Même si j'ai déjà eu envie d'exécuter le javascript des pages HTML que je lis avec WWW::Mechanize, je n'ai jamais réussi, et je ne suis pas allé aussi loin que toi dans la recherche. En gros, tu voudrais récupérer le HTML résultant de l'exécution du code Javascript embarqué dans une page et exécuté à la fin de son chargement ?

    Je m'abonne pour le coup où tu y parviendrais.

    Je n'ai pas regardé en détail, mais il me semble que les solutions à base de SpiderMonkey me paraissent les plus prometteuses.
    Outre ce que tu as cité, il y a :
    WWW::Scripter affublé du plugin WWW::Scripter::Plugin::JavaScript (lui aussi basé sur SpiderMonkey).

    Pourrais-tu détaillé les essais que tu as réalisé avec Javascript::SpiderMonkey ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Ouf, j'ai eu peur !
    Enfin quelqu'un qui a compris mon problème. C'est exactement ça, et en plus résumé en 3 lignes !

    Si je trouve quelque chose qui fonctionne, promis, je t'en ferai profiter.

    En fait, je n'ai pas encore testé SpiderMonkey. Il est sur ma liste, mais comme chaque piste empruntée s'avère parfois longue, je voulais savoir si je ne m'égarais pas trop.

    Je rajoute WWW::Scripter et WWW::Scripter:: Plugin::JavaScript que je ne connaissais pas.

    Et c'est reparti...

    Mais à quand le prochain épisode ?

    En tous, merci de t'être manifesté.


    Krys006

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je te demandais ce que tu avais fait avec SpiderMonkey, parce que justement, je trouvais que le travail n'était pas "anodin" pour arriver à conclure que le résultat n'était pas probant. Selon moi, il faut identifier dans le source HTML, tous les bouts de code Javascript dans l'ordre (les balises SCRIPT avec ou sans attribut src), et tous les attributs de balises HTML qui exécutent du code javascript, et les exécuter dans un environnement Javascript unique, dans le bon ordre.

    Personnellement, je ne suis pas allé très loin dans cette approche, car je trouvais la tâche bien trop lourde au regard du besoin. Du coup, j'ai pris d'énormes raccourcis pour récupérer les informations manquantes de la page, en allant directement parser les codes Javascript à la recherche de ces informations (parsing à coup de regexp). Mais mon besoin (envoyer des formulaire en ayant renseigné des champs qui sont remplis dynamiquement en javascript, entre autre) était sans doute différent du tien.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. Quels modules Perl pour gérer les documents XML ?
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 02/12/2010, 23h54
  2. [MySQL] Récupèrer les données des sous catégories en plus de la catégorie
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/10/2009, 00h14
  3. Réponses: 2
    Dernier message: 02/04/2009, 16h44
  4. Problème pour récupérer les données d'un datafile
    Par KhaoOs dans le forum Import/Export
    Réponses: 5
    Dernier message: 23/10/2007, 11h24
  5. Réponses: 1
    Dernier message: 18/04/2007, 06h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo