2010-05-18 33 views
5

任何人都有一個很好的解決方案,用JavaScript生成的內容(在這種情況下,HTML表格)抓取頁面的HTML源代碼?任何人都有一個很好的解決方案,用JavaScript生成的內容(在這種情況下,HTML表格)抓取頁面的HTML源代碼?

令人尷尬簡單,但可行的解決方案使用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; 
} 
?> 

使用撬棍優點是表將被提供(訪問)感謝,基於Mozilla的瀏覽器無頭。編輯:發現Crowbar的問題是一個衝突的應用程序,而不是服務器停機時間,這只是一個巧合。

回答

2

這是使用捲曲/撬棍在OP一個更強大的版本的範例:

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

是越來越頻繁的「未能打開流:HTTP請求失敗」使用f_g_c與多個網址發生錯誤。此外,請記住對$ url進行urlencode(例如'http%3A%2F%2Fwww.google.com'>'http://www.google.com')。

2

那麼,Java提供了一些便利的解決方案,如HtmlUint,它可以正確解釋Javascript,因此應該允許生成的html可見。

相關問題