2010-05-18 5 views
5

Chiunque ha una buona soluzione per raschiare il codice sorgente HTML di una pagina con contenuti (in questo caso tabelle HTML) generati con Javascript?Chiunque ha una buona soluzione per raschiare il codice sorgente HTML di una pagina con contenuti (in questo caso tabelle HTML) generati con Javascript?

Un imbarazzante semplice, anche se soluzione praticabile utilizzando 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; 
} 
?> 

Il vantaggio di utilizzare Crowbar è che i tavoli saranno resi (e accessibile), grazie al browser Mozilla-based senza testa. Modifica: scoperto che il problema con Crowbar era un'app in conflitto, non il tempo di inattività del server, che era solo una coincidenza.

risposta

2

Questa è una versione più robusta dell'esempio nel PO utilizzando cURL/Crowbar:

<?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; 
} 
?> 

stava diventando frequente "Impossibile aprire il flusso: HTTP richiesta non riuscita" errori che utilizzano f_g_c con più URL.

Inoltre, ricorda di urlencode l'url $ (ad esempio "http% 3A% 2F% 2Fwww.google.com"> "http://www.google.com").

2

Bene, Java fornisce alcune soluzioni convenienti, come HtmlUint, che interpreta correttamente Javascript e, di conseguenza, dovrebbe consentire la visualizzazione dell'html generato.

Problemi correlati