scrape html généré par javascript avec python
J'ai besoin de gratter un site avec python. Je obtenir le code source html avec le code urlib module, mais j'ai besoin de gratter aussi un code html qui est généré par une fonction javascript (qui est inclus dans la source html). Ce que ces fonctions ne "dans" le site, c'est que lorsque vous appuyez sur un bouton, il génère un code html. Comment puis-je "presse" de ce bouton avec le code python? Peut scrapy m'aider? J'ai capturé la requête POST avec firebug mais quand j'essaie de le passer dans l'url, j'obtiens une erreur 403. Des suggestions?
source d'informationauteur hymloth
Vous devez vous connecter pour publier un commentaire.
En Python, je pense que Le sélénium 1.0 est le chemin à parcourir. C'est une bibliothèque qui vous permet de contrôler un véritable navigateur web à partir de la langue de votre choix.
Vous avez besoin d'avoir le navigateur web en question installé sur la machine de votre script s'exécute, mais il semble que le moyen le plus fiable de programmation pour interroger les sites web qui utilisent beaucoup de JavaScript.
Car il n'y a pas de réponse ici, je vais aller de l'avant et de l'écrire.
À gratter JS rendu des pages, nous avons besoin d'un navigateur qui a un moteur JavaScript (e.j'ai, en charge JavaScript rendu)
Options comme Mécaniserurl2lib ne fonctionnera pas, car ils NE PAS en charge JavaScript.
Alors, voici ce que vous devez faire:
Installation PhantomJS à exécuter avec Selenium. Après avoir installé les dépendances pour les deux d'entre eux (voir cette), vous pouvez utiliser le code suivant comme exemple pour aller chercher le rendu complète du site web.
J'ai dû le faire avant (en .NET) et vous êtes fondamentalement va héberger un navigateur, vous devez cliquez sur le bouton, et ensuite interroger le DOM (document object model) du navigateur pour obtenir le code HTML généré.
C'est certainement l'un des inconvénients des applications web vers un Ajax/Javascript approche pour la génération de code HTML côté client.
J'utilise webkit, qui est le moteur de rendu du navigateur derrière Chrome et Safari. Il y a Liaisons Python pour webkit par Qt. Et voici une exemple pour exécuter le code JavaScript et d'en extraire le HTML final.
Pour Scrapy (grande python grattage cadre) il n'y a scrapyjs: un supplément de downloader gestionnaire /middleware gestionnaire en mesure de grattage javascript contenu généré par l'.
Il est basé sur le moteur webkit par pygtk, python-webkit, et python-jswebkit et c'est assez simple.