加载js后获取网页内容

时间:2018-03-06 09:21:56

标签: javascript php html web-crawler guzzle

我通过file_get_contents向网站发送获取内容的请求 例如

$html=file_get_contents('http://....');
var_dump(HTML::encode($html));

但是html身体标签由js填充所以我不能得到身体。身体是这样的



<body> </body>
&#13;
&#13;
&#13;

如何通过php获取身体

2 个答案:

答案 0 :(得分:0)

您可以使用专门为此目的设计的工具。

一种流行的解决方案是Symfony's Panther library

鉴于您要获取其内容的页面托管在http://example.com上,并且使用javascript将id为“ myElement”的元素添加到该页面(表明我们所依赖的javascript已经完成执行) , 我们可以运行以下代码:

$client = \Symfony\Component\Panther\Client::createChromeClient();
$crawler = $client->request('GET', 'http://example.com');
$client->waitFor('#myElement');
var_dump($crawler->html());

答案 1 :(得分:-1)

如果脚本正在填充目标网站内容,那么您无法通过上述方法访问它,因为在您执行上述PHP调用时,没有提供执行脚本来填充正文的区域。或者,您可以使用ajax获取目标网站内容,该内容也将根据原产地/请求进行限制,只有您可以访问目标网站或者您可以使用iframe且我不知道哪个适合无论如何你还需要完成什么?