首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使file_get_contents()完全等待网站加载

问使file_get_contents()完全等待网站加载
EN

Stack Overflow用户
提问于 2015-01-24 20:51:39
回答 4查看 5.6K关注 0票数 0

我试图把这个网站放到我的php变量中:

https://www.warcraftlogs.com/rankings/server/393/latest/#class=Druid&spec=Feral

您可以看到,网站只是刚刚开始加载网站的真实内容,一旦页面已经完成第一次加载。

代码语言:javascript
复制
file_get_contents("https://www.warcraftlogs.com/rankings/server/393/latest/#class=Druid&spec=Feral");

只返回空库存网站,而不返回第二步加载的表中的实际内容。

有办法让file_get_contents等待站点加载吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-24 20:58:01

为了了解站点上正在发生的事情,请尝试打开浏览器的网络检查器。您将看到页面本身的加载,然后将看到各种其他资源的加载,如CSS文件、JS文件、图像和更多的页面。

其他页面之一是:https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&page=1。

看起来,主站点发出一个AJAX请求,从该URL中获取附加数据。请注意,file_get_contents()不可能同时获得所有内容,因为file_get_contents()不会解析网站或评估任何JS ( JS是触发AJAX请求的因素)。解决方案很简单--而不是使用file_get_contents()抓取主站点,而是使用它获取数据的辅助页面。

如果您想要获取这个URL,就必须深入挖掘。如果打开主页,您会发现嵌入在页面上的JS的一部分如下所示:

代码语言:javascript
复制
function loadTable()
{
    var loadString = '/rankings/table/' + filterMetric + '/' + zoneID + '/' + filterBoss + '/' + filterDifficulty + '/' + filterSize + '/' + filterRegion + '/' + filterClass + '/' + filterSpec + '/' + filterBracket + '/' + filterServer + '/' + '?' + "search=" + filterSearch + "&page=" + filterPage
    $("#table-container").load(loadString, tableLoaded)
}

请注意它是如何使用所需的参数动态创建字符串的。然后调用$.fn.load(),这将触发对URL的AJAX请求。

票数 3
EN

Stack Overflow用户

发布于 2015-01-24 20:55:07

票数 1
EN

Stack Overflow用户

发布于 2015-01-24 20:56:09

该站点使用ajax,您可以找到ajax加载并获得它。真正的股票网址是:

代码语言:javascript
复制
file_get_contents("https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&page=1");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28130130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档