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