php*_*wns 5 php java dom html-table web-scraping
任何人都有一个很好的解决方案,用于使用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;
}
?>
Run Code Online (Sandbox Code Playgroud)
使用Crowbar的优势在于,由于基于Mozilla的无头浏览器,表格将被呈现(并且可访问).编辑:发现Crowbar的问题是一个冲突的应用程序,而不是服务器停机时间,这只是一个巧合.
这是 OP 中使用 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;
}
?>
Run Code Online (Sandbox Code Playgroud)
经常出现“无法打开流:HTTP 请求失败!”的情况 将 f_g_c 与多个 URL 一起使用时出错。
另外,请记住对 $url 进行 urlencode(例如“http%3A%2F%2Fwww.google.com”>“ http://www.google.com ”)。