Je veux utiliser PhantomJS en Python . J'ai recherché ce problème sur Google, mais je n'ai pas trouvé de solutions appropriées.
Je trouve que c'est os.popen()
peut-être un bon choix. Mais je n'ai pas pu lui transmettre quelques arguments.
L'utilisation subprocess.Popen()
peut être une bonne solution pour l'instant. Je veux savoir s'il y a une meilleure solution ou non.
Existe-t-il un moyen d'utiliser PhantomJS en Python?
subprocess.popen
mais avec quelques fonctionnalités étendues pour rendre l'api transparente.Réponses:
La façon la plus simple d'utiliser PhantomJS en python est via Selenium. La méthode d'installation la plus simple est
npm -g install phantomjs-prebuilt
Après l'installation, vous pouvez utiliser phantom aussi simplement que:
Si votre variable d'environnement de chemin d'accès système n'est pas définie correctement, vous devrez spécifier le chemin exact comme argument pour
webdriver.PhantomJS()
. Remplacez ceci:... avec ce qui suit:
Références:
la source
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
et ... ça a marché!PhantomJS a récemment complètement abandonné le support Python . Cependant, PhantomJS intègre désormais Ghost Driver .
Un nouveau projet a depuis intensifié pour combler le vide:
ghost.py
. Vous voudrez probablement l'utiliser à la place:la source
Depuis que le GhostDriver est livré avec le PhantomJS, il est devenu encore plus pratique de l'utiliser via Selenium.
J'ai essayé l'installation Node de PhantomJS, comme suggéré par Pykler, mais dans la pratique, je l'ai trouvée plus lente que l'installation autonome de PhantomJS. Je suppose que l'installation autonome n'a pas fourni ces fonctionnalités plus tôt, mais à partir de la version 1.9, elle le fait très bien.
Maintenant, vous pouvez utiliser comme ça
la source
Voici comment je teste javascript en utilisant PhantomJS et Django:
mobile / test_no_js_errors.js :
mobile / tests.py :
Exécutez les tests :
manage.py test mobile
la source
La réponse de @Pykler est excellente, mais l'exigence de nœud est obsolète. Les commentaires dans cette réponse suggèrent la réponse plus simple, que j'ai mise ici pour gagner du temps aux autres:
Installer PhantomJS
Comme le souligne @ Vivin-Paliath, il s'agit d'un projet autonome, ne faisant pas partie de Node.
Mac:
Ubuntu:
etc
Configurez un
virtualenv
(si vous ne l'avez pas déjà fait):Si votre machine possède à la fois Python 2 et 3, vous devrez peut-être exécuter
virtualenv-3.6 mypy
ou similaire.Installez le sélénium:
Essayez un test simple, comme celui emprunté à la documentation :
la source
PhantomJS
sur Windows? Cela ne semble pas fonctionner avec lapip
commande.c'est ce que je fais, python3.3. Je traitais d'énormes listes de sites, donc l'échec du délai d'attente était vital pour que le travail traverse toute la liste.
la source
Si vous utilisez Anaconda, installez avec:
dans votre script:
fonctionne parfaitement.
la source
Si vous utilisez Buildout , vous pouvez facilement automatiser les processus d'installation décrits par Pykler à l'aide de la recette gp.recipe.node .
Cette partie installe node.js en tant que binaire (au moins sur mon système) puis utilise npm pour installer PhantomJS. Enfin, il crée un point d'entrée
bin/phantomjs
, avec lequel vous pouvez appeler le pilote Web PhantomJS. (Pour installer Selenium, vous devez le spécifier dans vos exigences d'oeuf ou dans la configuration Buildout.)la source
gp.recipe.phantomjs
, qui configurephantomjs
etcasperjs