dom完成后如何解析javascript加载的内容

时间:2011-04-26 04:19:57

标签: php javascript parsing dynamic

我一直在努力解析来自wow军械库的一些数据并且遇到了一些麻烦。当涉及提供玩家收到的成就的网站时,它使用javascript来控制诸如#73:1283之类的字符串以显示所请求的信息。 (我把这个号码编了,但请求的数据就这样形成了。)

  1. 是否可以从需要javascript的页面中提取数据以使用php显示其数据?
  2. 如何使用php解析dom准备好或完成后已加载的网站中的数据?

3 个答案:

答案 0 :(得分:0)

我建议您查看是否可以复制PHP中的JavaScript发送的查询。虽然我不相信有一种方法可以在PHP中处理JavaScript,但肯定没有一种简单或可扩展的方式。

我会尝试扫描您使用PHP下载的第一页的源代码,以获取您提到的格式的字符串。然后,如果他们网站上的JS查询类似http://www.wow.com/armory.php?id=#72:1284的内容,您可以下载下一个的源代码。您可以了解JS如何使用FireBug或Chrome或Safari中的Inspector查询服务器。

总结如下:

  1. 检查以查找JS URL格式以及是否可以复制它。
  2. 创建PHP以获取主页并提取所有字符串。
  3. 创建PHP以循环遍历这些字符串并获取这些页面(使用JS请求的URL)。
  4. 用这些信息做任何你想做的事。

答案 1 :(得分:0)

您可以尝试使用jquery的$(document).onready函数 在网页加载时运行java脚本代码。

<div id="wowoData">#4325325</div>

<script>
$(document).ready(
function(){
$("#wowoData").css("border","1px solid red");
}

)
</script>

答案 2 :(得分:0)

通过使用Firebug,我能够查看HTTP标头,了解在这些页面上生成内容的AJAX调用:http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement#96:14861http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement#96

看起来该页面正在进行异步调用以加载此页面:http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement/14861当哈希后的部分为96:14861时,以及当哈希之后的部分只是调用http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement/96时96.这两个页面都返回可以解析为呈现HTML的XML。

一般来说,如果哈希之后只有一个数字,只需将http://.../achievement/<number here>作为URL。如果有两个数字,请将第二个数字放在URL的末尾。

您需要做的事情,而不是拉动Javascript并解释它,是在PHP中自己向这些URL发出HTTP请求(例如使用cURL)并自行解析数据。

我真的建议学习JavaScript和jQuery,因为你很难真正建立一个好的网站,从WoW军械库中提取信息而不了解后台正在进行的所有AJAX负载。