2010-06-09 51 views
3

当我需要从一个网站获取内容时,我使用了file_get_content()函数,但是现在我需要获取一个数据,该数据在ajax请求后加载。所以我不能提到完全的网址。 有没有什么算法可以做这样的事情?从ajax请求中抓取数据,有可能吗?

谢谢。

+0

+1有趣的问题!我没有为你的答案不幸:) – nico 2010-06-09 16:36:49

回答

3

如果我正确理解你的问题,你想在加载AJAX数据的网站上做一个file_Get_content ...这是一个客户端过程,当客户端的浏览器碰到它时发生,一个服务器端请求你不会看到它。

最好的办法是通过Firebug中的NET面板找到ajax请求的信息,然后在一个单独的文件中请求该信息获取内容调用。

+0

好吧,让我们假设,我知道这个函数,这使得ajax requset,但我怎么能从我的脚本调用相同的功能? 我有一些想法,但他们都很辛苦。 – Simon 2010-06-09 16:42:38

+0

@Syom:这仍然是客户端电话。你最好的选择是访问网站,看看你的NET面板中的萤火虫,并观看所做的请求。找到你想要grep的人,然后创建你的电话。请参阅:http://michaelsync.net/2007/10/15/firebug-tutorial-section-4-net-css-and-dom-tabs – Petrogad 2010-06-09 16:55:15

0

您可能会附加到像Rhino这样的JavaScript实现,但这将是一条漫长而痛苦的道路。

0

在Firebug(firefox)或Chromes Developer Tools中的资源面板中使用Net Panel,您可以从特定页面观看AJAX调用。然后,您可以在JavaScript中调用相同的请求,也可以使用php脚本作为页面的代理。如果您想使用PHP代理方法,则可以使用file_get_contents或cURL来执行更高级的请求(例如POST数据)。然后,我会建议缓存数据,以免扰乱从谁获取信息并缩短脚本执行时间。

如果包含数据的变化,那么你可以使用正则表达式取决于它如何工作,以找到在页面的URL页面的URL

0

这听起来像你想抓住从一个页面的具体内容一个远程服务器。您可以考虑使用jQuery的load()函数此:

$('#my_container').load('local_proxy.php #container'); 

你的本地代理会处理的file_get_contents()远程调用跨域安全方面的原因,但它会从ID的远程元素加载内容“容器“(即<div id="container">)并将其直接传递到您的”my_container“中。

不知道这是否就是你要找的东西,但它是很好的做了这么多与JS ...的一行:P