J'écris une araignée avec scrapy, cependant, je rencontre un site Web qui a rendu avec js, ainsi l'urllib2.open_url ne fonctionne pas. J'ai trouvé que je pouvais ouvrir le navigateur avec webbrowser.open_new (url), cependant, je n'ai pas trouvé comment obtenir le code de la page src avec webbrowser. Y at-il un moyen que je pourrais utiliser pour faire cela avec webbrowser, ou y at-il d'autres solutions sans webbrowser pour traiter les sites js?Comment obtenir le code source de webbrowser avec python
Répondre
Si vous avez besoin de traiter JavaScript, vous devez implémenter un moteur JavaScript. Cela rend votre araignée beaucoup plus complexe. Principalement parce que JavaScript modifie presque toujours le DOM en fonction du temps ou d'une action prise par l'utilisateur. Cela rend extrêmement difficile de traiter JS dans un robot d'exploration. Si vous avez vraiment besoin de traiter JavaScript dans votre araignée, vous pouvez jeter un oeil à moteur JavaScript par Mozilla: https://developer.mozilla.org/en/docs/SpiderMonkey
Vous pouvez utiliser grattoir avec le moteur Webkit disponible là-bas.
L'un d'eux est dryscrape.
Exemple:
import dryscrape
search_term = 'dryscrape'
# set up a web scraping session
sess = dryscrape.Session(base_url = 'http://google.com')
# we don't need images
sess.set_attribute('auto_load_images', False)
# visit homepage and search for a term
sess.visit('/')
q = sess.at_xpath('//*[@name="q"]')
q.set(search_term)
q.form().submit()
# extract all links
for link in sess.xpath('//a[@href]'):
print link['href']
# save a screenshot of the web page
sess.render('google.png')
print "Screenshot written to 'google.png'"
Voir plus d'infos sur:
https://github.com/niklasb/dryscrape
https://dryscrape.readthedocs.org/en/latest/index.html
Il y a aussi ghost (http://jeanphix.me/Ghost.py/) une autre implémentation webkit python headless. Je n'ai pas essayé les deux, donc je ne peux pas dire lequel est le meilleur. –
Raslan: merci pour votre suggestion, je travaille sur windows et quand j'ai essayé d'installer 'dryscrape', ça dit que l'installation est réussie, mais ça échoue quand j'essaye d'importer drayscrape en cours d'exécution, en disant 'from cssselect import GenericTranslator ImportError: aucun module nommé cssselect '. – user806135
Le guide d'installation de dryscrape contient les informations suivantes: pip install -r requirements.txt où le fichier requirements.txt contient la liste des packages à installer. L'un d'eux est cssselect.Suivez le guide d'installation –
Si vous avez besoin d'un moteur js complet, il y a un certain nombre de façons dont vous pouvez conduire webkit de Python . Jusqu'à récemment, ce genre de choses a été fait avec Selenium. Selenium conduit un navigateur entier. Plus récemment, il existe des moyens plus récents et plus simples d'exécuter un moteur Webkit (qui inclut le moteur JavaScript javascript) à partir de Python. Voir cette question SO: Headless Browser for Python (Javascript support REQUIRED!)
Il référence ce blog comme un exemple Scraping Javascript Webpages with Webkit. Il semble faire plus ou moins juste ce dont vous avez besoin.
J'essaie de trouver une réponse au même problème depuis quelques jours maintenant. Je suggère que vous essayez QT framework avec WebKit. Il existe deux liaisons python. L'un est PyQt et l'autre est PySide. Vous pouvez les utiliser directement si vous voulez créer quelque chose de plus complexe ou si vous voulez avoir 100% de contrôle sur votre code.
Pour des choses triviales comme l'exécution de JavaScript dans un environnement de navigateur, vous pouvez utiliser Ghost.py. Il a some sort of documentation et quelques problèmes lors de l'utilisation de la ligne de commande, mais sinon c'est génial.
- 1. Python WebKitWebView: comment obtenir le code source (généré)
- 2. Comment obtenir le code source de l'installation
- 3. Python Web Crawlers et "obtenir" le code source html
- 4. Comment obtenir le code source d'Ubuntu?
- 5. Comment obtenir le code source d'une URL
- 6. Comment obtenir le code source d'Eclipse
- 7. Obtenir le code source Android
- 8. Obtenir le code source Android
- 9. python - rafraîchir avec le module webbrowser
- 10. Obtenir le code source de la page
- 11. Composant Webbrowser - manipulation avec la source html
- 12. Comment puis-je obtenir le code source du code Google?
- 13. obtenir le code source HTML de webView
- 14. grattage web python avec le code source manquant
- 15. Comment obtenir le code source de la DLL native?
- 16. Comment obtenir le code source html de l'URL externe
- 17. OBTENIR LAUNCHER2 CODE SOURCE?
- 18. Javascript Obtenir le code source d'une image
- 19. Obtenir la source de la page Web dans Webbrowser C#
- 20. Comment indexer le code source avec ElasticSearch
- 21. C# webbrowser modifie la source
- 22. Comment obtenir le code source HTML de l'URL dans Android?
- 23. Comment obtenir le code source de la version ajaxcontroltoolkit 2012?
- 24. Obtenir le code source html dans php
- 25. Comment obtenir le code source de diverses fonctions utilisées dans la librairie python ta-lib?
- 26. Impossible d'obtenir le code source de la page en python
- 27. Où peut obtenir le code source Android?
- 28. Comment obtenir la dernière ligne dans le code source
- 29. Python - à partir du code octet à code source Python
- 30. Comment obtenir le code source d'une HttpResponse HttpClient?
Un webbrowser ne stocke pas le balisage d'une page, il contient un DOM. – Bergi