¿Existe alguna forma de utilizar PhantomJS en Python?

Resuelto flyer asked hace 12 años • 8 respuestas

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?

flyer avatar Nov 08 '12 17:11 flyer
Aceptado

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

  1. Instalar NodeJS
  2. Usando el administrador de paquetes de Node, instale phantomjs:npm -g install phantomjs-prebuilt
  3. 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
Pykler avatar Mar 29 '2013 08:03 Pykler

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
Martijn Pieters avatar Nov 08 '2012 10:11 Martijn Pieters

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.

  1. Instale PhantomJS ( http://phantomjs.org/download.html ) (Si está en Linux, seguir las instrucciones le ayudará https://stackoverflow.com/a/14267295/382630 )
  2. 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()
Pankaj avatar May 03 '2013 07:05 Pankaj