加载 js 后获取网页内容



>我向网站发送请求以获取内容file_get_contents例如

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

但是 html 正文标签由 js 填充,所以我无法获得正文。 身体是这样的

<body> </body>

如何通过 php 获得身体

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

一个流行的解决方案是Symfony的Panther库。

假设您尝试获取内容的页面托管在 http://example.com,并且使用 javascript 将 ID 为"myElement"的元素添加到页面中(表示我们依赖的 javascript 已完成执行(,我们可以运行以下代码:

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

如果目标网站内容由脚本填充,则无法通过上述方法访问它,因为当您执行上述PHP调用时,没有提供执行脚本以填充正文的区域如上所述。 或者,您可以使用Ajax获取目标网站内容,该内容也将具有基于来源/请求的限制,这只有在您有权访问目标网站或可以使用iframe,我不知道哪个适合您真正需要完成的工作?

最新更新