Scraping des sites Web avec Javascript activé?
Je suis en train de gratter et de soumettre l'information à des sites web qui s'appuient largement sur le Javascript de faire la plupart de ses actions. Le site ne fonctionne même pas quand j'ai désactiver le Javascript dans mon navigateur.
J'ai cherché des solutions sur Google et SI il y avait quelqu'un qui m'a suggéré de désosser le Javascript, mais je n'ai aucune idée de comment faire cela.
Jusqu'à présent, j'ai été à l'aide de Mécaniser et il fonctionne sur les sites web qui ne nécessitent pas de Javascript.
Est-il possible d'accéder à des sites web qui utilisent Javascript en utilisant urllib2 ou quelque chose de similaire?
Je suis également prêt à apprendre le Javascript, si c'est ce qu'il faut.
source d'informationauteur user216171
Vous devez vous connecter pour publier un commentaire.
J'ai écrit un petit tutoriel sur ce sujet, ce qui pourrait aider:
http://koaning.io/dynamic-scraping-with-python.html
Fondamentalement, ce que vous faites est que vous avez le sélénium bibliothèque de prétendre que c'est un navigateur firefox, le navigateur va attendre jusqu'à ce que tous les javascript est chargé avant qu'il continue de vous passer la chaîne html. Une fois que vous avez cette chaîne, vous pouvez ensuite analyser avec beautifulsoup.
Découvrez pied-de-biche. Je n'ai eu aucune expérience avec elle, mais j'étais curieux de connaître la réponse à votre question, j'ai donc commencé à googler autour. J'aimerais savoir si cela fonctionne pour vous.
http://grep.codeconsult.ch/2007/02/24/crowbar-scrape-javascript-generated-pages-via-gecko-and-rest/
Peut-être que vous pourriez utiliser Selenium Webdriverqui a des bindings python je crois. Je pense que c'est principalement utilisée comme un outil pour tester les sites web, mais je suppose qu'il doit être utilisable pour gratter trop.
J'ai eu exactement le même problème. Il n'est pas simple du tout, mais j'ai finalement trouvé une excellente solution, à l'aide de
PyQt4.QtWebKit
.Vous trouverez les explications sur cette page : http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/
Je l'ai testé, je l'utilise actuellement, et c'est super !
Son grand avantage est qu'il peut fonctionner sur un serveur, en utilisant uniquement de X, sans un environnement graphique.
En fait, je peux suggérer à l'aide de Sélénium. Ses principalement conçues pour les essais de Web-Applications à partir d'un "point de vue utilisateur, cependant il est fondamentalement un "FireFox" pilote. En fait, j'ai utilisé pour cela ... bien que j'ai été scapping une dynamique AJAX page web. Aussi longtemps que le Javascript de la forme a une forme reconnaissable "Texte d'Ancre" que le Sélénium peut ", cliquez sur" tout devrait se régler.
Espère que ça aide
Vous devriez regarder dans l'aide de Ghostune bibliothèque Python qui enveloppe le PyQt4 + WebKit hack.
Ce fait
g
le WebKit client:Vous pouvez saisir une page avec
g.open(url)
et puisg.content
permettra d'évaluer le document dans son état actuel.- Esprit a d'autres fonctionnalités intéressantes, comme l'injection de JS et certaines méthodes de remplissage, et vous pouvez passer le document résultant BeautifulSoup et ainsi de suite:
soup = bs4.BeautifulSoup(g.content)
.Jusqu'à présent, Ghost est la seule chose que j'ai trouvé qui fait ce genre de chose facile en Python. La seule limitation que j'ai rencontré est que vous ne pouvez pas créer facilement plus d'une instance de l'objet client,
ghost.Ghost
mais vous pouvez travailler autour de cela.