script run phantom installing example ariya javascript html parsing dom phantomjs

javascript - run - Utilice PhantomJS para extraer html y texto



phantomjs svg (4)

Para extraer el contenido de texto de la página, puede probar este return document.body.textContent; pero no estoy seguro de que el resultado sea útil.

Intento extraer todo el contenido de texto de una página (porque no funciona con Simpledomparser)

Intento modificar este sencillo ejemplo del manual

var page = require(''webpage'').create(); console.log(''The default user agent is '' + page.settings.userAgent); page.settings.userAgent = ''SpecialAgent''; page.open(''http://www.httpuseragent.org'', function (status) { if (status !== ''success'') { console.log(''Unable to access network''); } else { var ua = page.evaluate(function () { return document.getElementById(''myagent'').textContent; }); console.log(ua); } phantom.exit(); });

Intento cambiar

return document.getElementById(''myagent'').textContent;

a

return document.textContent;

Esto no funciona

¿Cuál es la forma correcta de hacer esto simple?


Esta versión de su script debe devolver todo el contenido de la página:

var page = require(''webpage'').create(); page.settings.userAgent = ''SpecialAgent''; page.open(''http://www.httpuseragent.org'', function (status) { if (status !== ''success'') { console.log(''Unable to access network''); } else { var ua = page.evaluate(function () { return document.getElementsByTagName(''html'')[0].outerHTML; }); console.log(ua); } phantom.exit(); });


Hay varias formas de recuperar el contenido de la página como una cadena:

  • page.content proporciona la fuente completa incluyendo el marcado ( <html> ) y doctype ( <!DOCTYPE html> ),

  • document.documentElement.outerHTML (a través de page.evaluate ) proporciona la fuente completa que incluye el marcado ( <html> ), pero sin doctype,

  • document.documentElement.textContent (a través de page.evaluate ) proporciona el contenido de texto acumulativo del documento completo, incluidos CSS y JavaScript en línea, pero sin marcado.

  • document.documentElement.innerText (a través de page.evaluate ) proporciona el contenido de texto acumulativo del documento completo, excluyendo CSS y JavaScript en línea y sin marcado.

document.documentElement puede ser intercambiado por un elemento o consulta de su elección.


Habiendo encontrado esta pregunta mientras trataba de resolver un problema similar, terminé adaptando una solución de esta pregunta de la siguiente manera:

var fs = require(''fs''); var file_h = fs.open(''header.html'', ''r''); var line = file_h.readLine(); var header = ""; while(!file_h.atEnd()) { line = file_h.readLine(); header += line; } console.log(header); file_h.close(); phantom.exit();

Esto me dio una cadena con el archivo HTML de lectura que fue suficiente para mis propósitos, y espero que pueda ayudar a otros que se encontraron con esto.

La pregunta parecía ambigua (¿era todo el contenido del archivo requerido, o simplemente el "texto" alias Strings?) Así que esta es una posible solución.