1

我正在尝试使用以下方式获取 url 的内容file_get_contents()

file_get_contents('http://www.website.com');

哪个工作正常,但我还必须获取看起来像这样的页面内容:http://www.website.com#somevalue但是,如果我使用与上面相同的方法,它只会返回与没有哈希相同的内容。是否可以获取更新的内容?我假设他们正在使用骨干网或其他类型的路由来处理这个问题。

4

3 回答 3

1

似乎他们正在使用 Javascript 生成动态内容。不幸的是,file_get_contents将无法执行该 JS 代码——这解释了为什么您没有获得更新的内容。

抓取动态页面的最佳选择是使用浏览器来呈现页面并抓取元素。有一些 StackOverflow 问题讨论了您应该研究的抓取动态网站。

于 2012-11-10T23:16:19.530 回答
0

http://www.website.com#somevalue v/s http://www.website.com

两者都请求相同的页面资源->http://www.website.com 由于散列而进一步导航是使用JavaScript完成的。

因此,您无法使用 直接获取这些内容file_get_contents,因为您正在获取响应 html,但不执行其中引用的客户端脚本。


J4P5是用 PHP 5 编写的 JavaScript 解释器,它可以帮助您在服务器上执行 JS。

于 2012-11-10T23:16:03.150 回答
0

URL 片段(“哈希”)不会提交给服务器,它们只是客户端。如果页面在客户端基于哈希通过 Javascript 动态更改,您需要下载站点,将其解析为 DOM,运行嵌入的 Javascript,然后抓取 DOM。

换句话说,您需要在您的服务器上模拟一个完整的浏览器。
这并不是微不足道的。

我建议您根据关键字“无头浏览器”调查您的情况可能发生的情况。

于 2012-11-10T23:16:27.823 回答