我正在尝试使用以下方式获取 url 的内容file_get_contents()
:
file_get_contents('http://www.website.com');
哪个工作正常,但我还必须获取看起来像这样的页面内容:http://www.website.com#somevalue
但是,如果我使用与上面相同的方法,它只会返回与没有哈希相同的内容。是否可以获取更新的内容?我假设他们正在使用骨干网或其他类型的路由来处理这个问题。
我正在尝试使用以下方式获取 url 的内容file_get_contents()
:
file_get_contents('http://www.website.com');
哪个工作正常,但我还必须获取看起来像这样的页面内容:http://www.website.com#somevalue
但是,如果我使用与上面相同的方法,它只会返回与没有哈希相同的内容。是否可以获取更新的内容?我假设他们正在使用骨干网或其他类型的路由来处理这个问题。
似乎他们正在使用 Javascript 生成动态内容。不幸的是,file_get_contents
将无法执行该 JS 代码——这解释了为什么您没有获得更新的内容。
抓取动态页面的最佳选择是使用浏览器来呈现页面并抓取元素。有一些 StackOverflow 问题讨论了您应该研究的抓取动态网站。
两者都请求相同的页面资源->http://www.website.com
由于散列而进一步导航是使用JavaScript完成的。
因此,您无法使用 直接获取这些内容file_get_contents
,因为您正在获取响应 html,但不执行其中引用的客户端脚本。
J4P5是用 PHP 5 编写的 JavaScript 解释器,它可以帮助您在服务器上执行 JS。
URL 片段(“哈希”)不会提交给服务器,它们只是客户端。如果页面在客户端基于哈希通过 Javascript 动态更改,您需要下载站点,将其解析为 DOM,运行嵌入的 Javascript,然后抓取 DOM。
换句话说,您需要在您的服务器上模拟一个完整的浏览器。
这并不是微不足道的。
我建议您根据关键字“无头浏览器”调查您的情况可能发生的情况。