javascript - promises - Web scraping desde un sitio de puntuación en vivo
web scraping javascript tutorial (1)
Si obtiene el código fuente de su sitio: view-source: http://www.flashresultats.fr/ , presione ctrl+f
y busque el nodo g_1_UJzOgxfc
, no lo encontrará. Está claro que se generó con ayuda de javascript después de cargar el documento inicial. Esa es la razón por la que no lo obtiene enviando una simple solicitud.
Por lo tanto, para obtener los elementos que se crean dinámicamente, debe ejecutar la incrustación de javascript en el cuerpo recibido de su solicitud. Puede usar el módulo de puente PhantomJs para obtenerlo:
var phantom = require(''phantom'');
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.flashresultats.fr", function (status) {
page.evaluate(function () { return document.getElementById(''g_1_UJzOgxfc''); }, function (result) {
console.log(''g_1_UJzOgxfc element is:'' + result);
ph.exit();
});
});
});
});
Estoy tratando de obtener datos de un sitio de puntuación en vivo. Estoy utilizando node.js con express.js, request.js y cheerio.js para obtener el HTML de una página web. Funciona para algunas partes del HTML, pero no para las partes vivas.
Estoy tratando de obtener datos del sitio web http://www.flashresultats.com . Cuando uso las Herramientas para desarrolladores de Chrome, puedo ver el contenido HTML, pero cuando uso mi código JavaScript, el resultado está vacío.
Aquí está la captura de Chrome de lo que estoy tratando de extraer:
Y aquí está el código que estoy usando:
var express = require(''express'');
var fs = require(''fs'');
var request = require(''request'');
var cheerio = require(''cheerio'');
var app = express();
url = ''http://www.flashresultats.fr''
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var myvar = $(''#g_1_UJzOgxfc'').html();
console.log(myvar);
}
else {
console.log(''Error'');
}
})