如何使用哈希获取URL的内容?

时间:2012-11-10 23:11:19

标签: php hash web-scraping

我正在尝试使用file_get_contents()这样的网址内容:

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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。

答案 2 :(得分:0)

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

换句话说,您需要在服务器上模拟完整的浏览器 这不是一件轻而易举的事。

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