2011-08-15 28 views
5

¿Cómo se analizan los documentos html que hacen un uso intensivo de javascript? Sé que hay algunas bibliotecas en Python que pueden analizar archivos xml/html estáticos y básicamente estoy buscando un programa o biblioteca (o incluso un complemento de Firefox) que lea html + javascript, ejecute el bit de javascript y emita código html sin javascript por lo que se vería idéntico si se muestra en un navegador.Cómo analizar html que incluye el código de JavaScript

Como un ejemplo sencillo

<a href="javascript:web_link(34, true);">link</a> 

debe sustituirse por el valor apropiado el código JavaScript devuelve la función, por ejemplo,

<a href="http://www.example.com">link</a> 

Un ejemplo más complejo sería una página de facebook html que está llena de cargas de código de JavaScript.

Probablemente relacionado con How to "execute" HTML+Javascript page with Node.js pero realmente necesito Node.js y JSDOM? También relacionado levemente es Python library for rendering HTML and javascript pero no estoy interesado en rendir solamente la salida html pura.

+0

o bien obtener un tiempo de ejecución de JavaScript y ordenar algo con ella, o analice el código y resuelva qué va a terminar (configuración fuertemente por sitio). –

+0

http://stackoverflow.com/questions/19465510/how-to-parse-a-webpage-that-includes-javascript?rq=1 – gliptak

Respuesta

2

De Mozilla Gecko FAQ:

P. ¿Se puede invocar el motor Gecko de una secuencia de comandos shell de Unix? ¿Podría enviarle HTML y obtener una página web que podría enviarse a la impresora?

A. Realmente no es compatible; sin embargo, probablemente pueda obtener algo parecido a lo que desea al escribir su propia aplicación usando las API de incrustación de Gecko. Tenga en cuenta que actualmente no es posible imprimir sin un widget en la pantalla para procesar.

Embedding Gecko en un programa que da salida a lo que quiere puede ser demasiado pesado, pero al menos su salida será tan bueno como se pone.

+0

También podría agregar esta receta: http://siliconforks.com/doc/parsing -javascript-con-spidermonkey / –

3

Puede utilizar Selenium con el pitón tan detallada here

Ejemplo:

import xmlrpclib 

# Make an object to represent the XML-RPC server. 
server_url = "http://localhost:8080/selenium-driver/RPC2" 
app = xmlrpclib.ServerProxy(server_url) 

# Bump timeout a little higher than the default 5 seconds 
app.setTimeout(15) 

import os 
os.system('start run_firefox.bat') 

print app.open('http://localhost:8080/AUT/000000A/http/www.amazon.com/') 
print app.verifyTitle('Amazon.com: Welcome') 
print app.verifySelected('url', 'All Products') 
print app.select('url', 'Books') 
print app.verifySelected('url', 'Books') 
print app.verifyValue('field-keywords', '') 
print app.type('field-keywords', 'Python Cookbook') 
print app.clickAndWait('Go') 
print app.verifyTitle('Amazon.com: Books Search Results: Python Cookbook') 
print app.verifyTextPresent('Python Cookbook', '') 
print app.verifyTextPresent('Alex Martellibot, David Ascher', '') 
print app.testComplete() 
0

PhantomJS se puede cargar utilizando Selenium

$ ipython 

In [1]: from selenium import webdriver 

In [2]: browser=webdriver.PhantomJS() 

In [3]: browser.get('http://seleniumhq.org/') 

In [4]: browser.title 
Out[4]: u'Selenium - Web Browser Automation' 
Cuestiones relacionadas