¿Existe alguna forma de utilizar PhantomJS en Python?
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.
Usarlo subprocess.Popen()
puede ser una solución adecuada por ahora. Quiero saber si existe una solución mejor o no.
¿Existe alguna forma de utilizar PhantomJS en Python?
La forma más sencilla de utilizar PhantomJS en Python es a través de Selenium. El método de instalación más simple es
- Instalar NodeJS
- Usando el administrador de paquetes de Node, instale phantomjs:
npm -g install phantomjs-prebuilt
- instale selenium (en su virtualenv, si lo está usando)
Después de la instalación, puedes usar phantom tan simple como:
from selenium import webdriver
driver = webdriver.PhantomJS() # or add to your PATH
driver.set_window_size(1024, 768) # optional
driver.get('https://google.com/')
driver.save_screenshot('screen.png') # save a screenshot to disk
sbtn = driver.find_element_by_css_selector('button.gbqfba')
sbtn.click()
Si la variable de entorno de la ruta del sistema no está configurada correctamente, deberá especificar la ruta exacta como argumento para webdriver.PhantomJS()
. Reemplace esto:
driver = webdriver.PhantomJS() # or add to your PATH
... con lo siguiente:
driver = webdriver.PhantomJS(executable_path='/usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs')
Referencias:
- http://selenium-python.readthedocs.io/
- ¿Cómo configuro un proxy para phantomjs/ghostdriver en Python webdriver?
- https://dzone.com/articles/python-testing-phantomjs
PhantomJS recientemente abandonó por completo el soporte de Python. Sin embargo, PhantomJS ahora incorpora Ghost Driver .
Desde entonces, ha surgido un nuevo proyecto para llenar el vacío: ghost.py
. Probablemente quieras usar eso en su lugar:
from ghost import Ghost
ghost = Ghost()
with ghost.start() as session:
page, extra_resources = ghost.open("http://jeanphi.me")
assert page.http_status==200 and 'jeanphix' in ghost.content
Ahora que GhostDriver viene incluido con PhantomJS, se ha vuelto aún más conveniente usarlo a través de Selenium.
Probé la instalación de PhantomJS en Node, como lo sugirió Pykler, pero en la práctica descubrí que es más lenta que la instalación independiente de PhantomJS. Supongo que la instalación independiente no proporcionaba estas funciones antes, pero a partir de la versión 1.9, sí las ofrece.
- Instale PhantomJS ( http://phantomjs.org/download.html ) (Si está en Linux, seguir las instrucciones le ayudará https://stackoverflow.com/a/14267295/382630 )
- Instale Selenium usando pip.
Ahora puedes usarlo así.
import selenium.webdriver
driver = selenium.webdriver.PhantomJS()
driver.get('http://google.com')
# do some processing
driver.quit()