2010-05-18 9 views
5

¿Alguien tiene una buena solución para raspar la fuente HTML de una página con contenido (en este caso, tablas HTML) generado con Javascript?¿Alguien tiene una buena solución para raspar la fuente HTML de una página con contenido (en este caso, tablas HTML) generado con Javascript?

Un vergonzosamente simple, aunque solución viable usando Crowbar:

<?php 
function get_html($url) // $url must be urlencode(d) 
{ 
$context = stream_context_create(array(
    'http' => array('timeout' => 120) // HTTP timeout in seconds 
    )); 
    $html = substr(file_get_contents('http://127.0.0.1:10000/?url=' . $url . '&delay=3000&view=browser', 0, $context), 730, -32); // substr removes HTML from the Crowbar web service, returning only the $url HTML 
return $html; 
} 
?> 

La ventaja de utilizar la palanca es que las mesas serán prestados (y accesible) gracias al navegador basado en Mozilla sin cabeza. Editar: descubrí que el problema con Crowbar era una aplicación conflictiva, no el tiempo de inactividad del servidor, que era solo una coincidencia.

Respuesta

2

Ésta es una versión más robusta del ejemplo en el PO usando cURL/palancas:

<?php 
function get_html($url) 
{ 
$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, 'http://127.0.0.1:10000/?url=' . $url . '&delay=3000&view=as-is'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$html = curl_exec ($curl); 
return $html; 
} 
?> 

estaba recibiendo frecuentes "No se pudo abrir la secuencia: HTTP petición falló" errores al utilizar f_g_c con múltiples URL.

Además, recuerde urlencode $ url (por ejemplo, 'http% 3A% 2F% 2Fwww.google.com'> 'http://www.google.com').

2

Bueno, Java proporciona algunas soluciones convenientes, como HtmlUint, que interpreta Javascript correctamente y, en consecuencia, debe permitir que el html generado sea visible.

Cuestiones relacionadas