Ich möchte PhantomJS in Python verwenden . Ich habe dieses Problem gegoogelt, konnte aber keine richtigen Lösungen finden.
Ich finde os.popen()
vielleicht eine gute Wahl. Aber ich konnte einige Argumente nicht weitergeben.
Die Verwendung subprocess.Popen()
kann vorerst eine geeignete Lösung sein. Ich möchte wissen, ob es eine bessere Lösung gibt oder nicht.
Gibt es eine Möglichkeit, PhantomJS in Python zu verwenden?
subprocess.popen
aber mit einigen erweiterten Funktionen, um die API nahtlos zu machen.Antworten:
Der einfachste Weg, PhantomJS in Python zu verwenden, ist über Selen. Die einfachste Installationsmethode ist
npm -g install phantomjs-prebuilt
Nach der Installation können Sie Phantom so einfach verwenden wie:
Wenn Ihre Systempfad-Umgebungsvariable nicht richtig festgelegt ist, müssen Sie den genauen Pfad als Argument für angeben
webdriver.PhantomJS()
. Ersetzen Sie dies:... mit den folgenden:
Verweise:
quelle
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
und ... es hat funktioniert!PhantomJS hat kürzlich die Python-Unterstützung ganz eingestellt. PhantomJS bettet jetzt jedoch Ghost Driver ein .
Seitdem ist ein neues Projekt hinzugekommen, um die Lücke zu füllen:
ghost.py
. Sie möchten das wahrscheinlich stattdessen verwenden:quelle
Seit der GhostDriver im Lieferumfang des PhantomJS enthalten ist, ist die Verwendung über Selenium noch komfortabler geworden.
Ich habe die Node-Installation von PhantomJS ausprobiert, wie von Pykler vorgeschlagen, aber in der Praxis war sie langsamer als die eigenständige Installation von PhantomJS. Ich denke, die eigenständige Installation hat diese Funktionen früher nicht bereitgestellt, aber ab Version 1.1 ist dies sehr wichtig.
Jetzt können Sie so verwenden
quelle
So teste ich Javascript mit PhantomJS und Django:
mobile / test_no_js_errors.js :
mobile / tests.py :
Führen Sie Tests durch :
manage.py test mobile
quelle
Die Antwort von @Pykler ist großartig, aber die Knotenanforderung ist veraltet. Die Kommentare in dieser Antwort deuten auf die einfachere Antwort hin, die ich hier eingefügt habe, um anderen Zeit zu sparen:
Installieren Sie PhantomJS
Wie @ Vivin-Paliath betont, handelt es sich um ein eigenständiges Projekt, das nicht Teil von Node ist.
Mac:
Ubuntu:
etc
Richten Sie eine ein
virtualenv
(falls Sie dies noch nicht getan haben):Wenn Ihr Computer sowohl über Python 2 als auch über Python 3 verfügt, müssen Sie möglicherweise ausführen
virtualenv-3.6 mypy
oder ähnliches.Selen installieren:
Versuchen Sie einen einfachen Test, wie diesen aus den Dokumenten entlehnt :
quelle
PhantomJS
unter Windows? Es scheint nicht mitpip
Befehl zu funktionieren .das ist was ich tue, python3.3. Ich habe große Listen von Websites verarbeitet, daher war es wichtig, dass das Zeitlimit nicht eingehalten wurde, damit der Job die gesamte Liste durchlaufen konnte.
quelle
Wenn Sie Anaconda verwenden, installieren Sie mit:
in Ihrem Skript:
funktioniert perfekt.
quelle
Falls Sie verwenden Buildout , können Sie einfach die Installationsprozesse automatisieren , dass Pykler das beschreibt die Verwendung von gp.recipe.node Rezept.
Dieser Teil installiert node.js als Binärdatei (zumindest auf meinem System) und verwendet dann npm, um PhantomJS zu installieren. Schließlich wird ein Einstiegspunkt erstellt
bin/phantomjs
, mit dem Sie den PhantomJS-Webdriver aufrufen können. (Um Selenium zu installieren, müssen Sie es in Ihren Ei-Anforderungen oder in der Buildout-Konfiguration angeben.)quelle
gp.recipe.phantomjs
, die konfiguriertphantomjs
undcasperjs