[英]How to parse content loaded by javascript after the dom is complete
我一直在分析武器庫中的一些數據,並且遇到了一些麻煩。 當涉及提供玩家已獲得的成就的網站時,它使用javascript來使諸如#73:1283
類的字符串#73:1283
以顯示所請求的信息。 (我增加了這個數字,但請求的數據格式如下)。
我建議您查看是否可以在PHP中復制JavaScript發送的查詢。 盡管我不相信有一種在PHP中處理JavaScript的方法,但是絕對沒有一種簡單或可擴展的方法。
我將嘗試掃描您用PHP下載的第一頁源代碼,以找到您提到的那種格式的字符串。 然后,如果他們網站上的JS查詢類似http://www.wow.com/armory.php?id=#72:1284的內容 ,則可以直接下載下一個的源代碼。 您可以了解JS如何使用FireBug或Chrome或Safari中的Inspector等查詢服務器。
因此,總而言之:
您可以嘗試使用jquery的$(document).onready函數,該函數有助於在網頁加載時運行Java腳本代碼。
前
<div id="wowoData">#4325325</div>
<script>
$(document).ready(
function(){
$("#wowoData").css("border","1px solid red");
}
)
</script>
通過使用Firebug,我能夠查看HTTP標頭,以查看正在進行哪些AJAX調用以生成這些頁面上的內容: http : //us.battle.net/wow/zh/character/black-dragonflight/glitchshot / achievement#96:14861和http://us.battle.net/wow/zh-CN/character/black-dragonflight/glitchshot/achievement#96
看起來該頁面正在進行異步調用以加載此頁面: http ://us.battle.net/wow/zh-CN/character/black-dragonflight/glitchshot/achievement/14861,當哈希值后面的部分為96:14861時,當哈希之后的部分僅為96時,調用http://us.battle.net/wow/zh/character/black-dragonflight/glitchshot/achievement/96 。這兩個頁面都返回可以解析為的XML呈現HTML。
因此,通常來說,如果哈希后面只有一個數字,則只需將http://.../achievement/<number here>
作為URL。 如果有兩個數字,請將第二個數字放在URL的末尾。
您不需要做的就是提取Java腳本並對其進行解釋,而需要自己使用PHP(例如,使用cURL)對這些URL發出HTTP請求,並自行解析數據。
我真的建議學習JavaScript和jQuery,因為要真正建立一個好的站點來從“魔獸世界”武器庫中獲取信息而又不了解后台正在發生的所有AJAX負載,將是非常困難的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.