Bonjour,

Mon problème est un tout petit peu complexe. J'aimerai scrapper des sites, et je le fais actuellement en récupérant le DOM en php avec une librairie (simple-html-dom), mais grossomodo c'est un

file_get_content($url)

Le problème est avec les sites qui génèrent leur contenu ou une partie de leur contenu en javascript (de manière asynchrone).

En gros ils chargent la base du site (header, footer , "mon compte"... ) et ensuite par un appel ajax le site récupèrent les informations importantes de la page.

(eg : http://www.massimodutti.com/fr/fr/men/gilets/gilet-cuir-surpiqûres-c1543502p6199622.html?colorId=700&categoryNav=1543502 )

Ma question est : Comment faire pour récupérer un DOM APRÈS la génération par javascript ? J'imagine qu'avec du PHP c'est impossible ? Est-ce qu'avec un serveur Node.js ça semble faisable ? Charger une URL => attendre que tous le javascript soit éxecuté puis rendre le DOM ?

En vous remerciant

5 réponses


Salut,

Oui je pense qu'avec NodeJS ça devrait être faisable, maintenant je ne sais pas du tout comment faire. Regarde du côté des plugins de manipulation du DOM sur NodeJS ça devrait te donner des piste ;)

Edit : Après une recherche rapide sur Google, j'ai trouvé ceci https://www.npmjs.com/package/node-dom. Je pense que ça devrait convenir à ton problème.

Stalfos
Auteur

Okay, donc ça impose d'avoir un serveur en Node.js, donc un dédié... Je vais regarder ça de plus près, merci à toi !
Edit : Merci, ça charge bien un DOM via une url, reste à savoir si le javascript est éxécuté. Je vais faire mes tests

Salut,
regarde peut être du côté de phantomjs

Stalfos, tu peux mettre ton projet sur Heroku. Si tu n'as pas une grosse charge, tu ne devrais pas avoir de frais.

Stalfos
Auteur

C'est déjà un site qui tourne avec Parse. Je crois qu'Heroku et Parse sont des services similaires, peut-être y a t'il moyen de faire tourner Node.js avec Parse ?