Quiero usar PhantomJS en Python . Busqué en Google este problema pero no pude encontrar las soluciones adecuadas.
Creo que os.popen()
puede ser una buena opción. Pero no pude pasarle algunos argumentos.
Usar subprocess.Popen()
puede ser una solución adecuada por ahora. Quiero saber si hay una mejor solución o no.
¿Hay alguna manera de usar PhantomJS en Python?
subprocess.popen
pero con algunas características extendidas para que la API sea perfecta.Respuestas:
La forma más fácil de usar PhantomJS en Python es a través de Selenium. El método de instalación más simple es
npm -g install phantomjs-prebuilt
Después de la instalación, puede usar fantasma tan simple como:
Si la variable de entorno de la ruta del sistema no está configurada correctamente, deberá especificar la ruta exacta como argumento
webdriver.PhantomJS()
. Reemplace esto:... con lo siguiente:
Referencias
fuente
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
y ... ¡funcionó!PhantomJS recientemente abandonó el soporte de Python por completo. Sin embargo, PhantomJS ahora incorpora Ghost Driver .
Ya que un nuevo proyecto ha intensificado para llenar el vacío:
ghost.py
. Probablemente quieras usar eso en su lugar:fuente
Ahora que el GhostDriver viene incluido con el PhantomJS, se ha vuelto aún más conveniente usarlo a través de Selenium.
Probé la instalación del Nodo de PhantomJS, como lo sugirió Pykler, pero en la práctica me pareció más lento que la instalación independiente de PhantomJS. Supongo que la instalación independiente no proporcionó estas características antes, pero a partir de v1.9, lo hace mucho.
Ahora puedes usar así
fuente
Así es como pruebo javascript usando PhantomJS y Django:
mobile / test_no_js_errors.js :
mobile / tests.py :
Ejecutar pruebas :
manage.py test mobile
fuente
La respuesta de @Pykler es excelente, pero el requisito de Node está desactualizado. Los comentarios en esa respuesta sugieren la respuesta más simple, que he puesto aquí para ahorrar tiempo a otros:
Instalar PhantomJS
Como señala @ Vivin-Paliath, es un proyecto independiente, no parte de Node.
Mac:
Ubuntu:
etc.
Configure un
virtualenv
(si aún no lo ha hecho):Si su máquina tiene Python 2 y 3, es posible que necesite ejecutar
virtualenv-3.6 mypy
o similar.Instalar selenio:
Pruebe una prueba simple, como esta prestada de los documentos :
fuente
PhantomJS
en Windows? No parece funcionar usando elpip
comando.esto es lo que hago, python3.3. Estaba procesando grandes listas de sitios, por lo que el incumplimiento del tiempo de espera era vital para que el trabajo se ejecutara en toda la lista.
fuente
Si usa Anaconda, instálelo con:
en tu guión:
funciona perfectamente.
fuente
En caso de que esté utilizando Buildout , puede automatizar fácilmente los procesos de instalación que Pykler describe utilizando la receta gp.recipe.node .
Esa parte instala node.js como binario (al menos en mi sistema) y luego usa npm para instalar PhantomJS. Finalmente crea un punto de entrada
bin/phantomjs
, con el que puede llamar al controlador web PhantomJS. (Para instalar Selenium, debe especificarlo en sus requisitos de huevo o en la configuración de Buildout).fuente
gp.recipe.phantomjs
, que configuraphantomjs
ycasperjs