Herkes JavaScript ile oluşturulmuş bir (bu durumda, HTML tabloları) içeriği ile sayfanın HTML kaynağını kazıma için iyi bir çözüm var mı?

2 Cevap java

Herkes JavaScript ile oluşturulmuş bir (bu durumda, HTML tabloları) içeriği ile sayfanın HTML kaynağını kazıma için iyi bir çözüm var mı?

Bir utanç verici basit kullanarak çalışabilir bir çözüm olsa 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;
}
?>

Kazayağı kullanarak avantaj tabloları render (ve erişilebilir) olacağını başsız mozilla tabanlı tarayıcı sayesinde. Düzenleme: kazayağı ile sorun sadece bir tesadüf oldu çakışan uygulaması değil, sunucu kesintilerini, olduğunu keşfetti.

2 Cevap

Bu cURL / levyeyle kullanarak OP örneğin daha güçlü bir versiyonu:

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

Sık alıyorum "failed to open stream!: HTTP isteği başarısız oldu" oldu Birden fazla URL ile f_g_c kullanarak hataları.

Ayrıca, $ url (örn. 'http% 3A% 2F% 2Fwww.google.com'> 'http://www.google.com') UrlEncode unutmayın.

Peki, Java doğru Javascript yorumladığı, HtmlUint gibi, bazı uygun çözümler sağlar ve bir sonucu olarak oluşturulan html görünür olması için izin vermelidir.