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 depage.evaluate
) proporciona la fuente completa que incluye el marcado (<html>
), pero sin doctype,document.documentElement.textContent
(a través depage.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 depage.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.