2010-05-18 1 views
5

Jeder hat eine gute Lösung zum Scraping der HTML-Quelle einer Seite mit Inhalt (in diesem Fall HTML-Tabellen) mit Javascript generiert?Jeder hat eine gute Lösung zum Scraping der HTML-Quelle einer Seite mit Inhalt (in diesem Fall HTML-Tabellen) mit Javascript generiert?

Eine peinliche einfache, wenn auch praktikable Lösung Crowbar mit:

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

Der Vorteil Crowbar zu verwenden ist, dass die Tabellen (und zugänglich) dank der Maden mozilla-basierten Browser gerendert wird. Edit: festgestellt, dass das Problem mit Crowbar eine widersprüchliche App war, nicht die Serverausfallzeit, die nur ein Zufall war.

Antwort

2

Dies ist eine robustere Version des Beispiels in der OP cURL/Crowbar mit:

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

häufig war immer "failed to open stream: HTTP request failed" Fehler bei der Verwendung von f_g_c mit mehreren URLs.

Denken Sie auch daran, die $ url zu codieren (z. B. "http% 3A% 2F% 2Fwww.google.com"> "http://www.google.com").

2

Nun, Java bietet einige komfortable Lösungen, wie HtmlUint, die korrekt Javascript interpretiert, und als Konsequenz sollte das generierte HTML sichtbar sein.

Verwandte Themen