簡體   English   中英

dom完成后如何解析javascript加載的內容

[英]How to parse content loaded by javascript after the dom is complete

我一直在分析武器庫中的一些數據,並且遇到了一些麻煩。 當涉及提供玩家已獲得的成就的網站時,它使用javascript來使諸如#73:1283類的字符串#73:1283以顯示所請求的信息。 (我增加了這個數字,但請求的數據格式如下)。

  1. 是否有可能從需要javascript才能使用php顯示其數據的頁面中提取數據?
  2. 在使用php准備好或完成dom后,如何從已加載的站點解析數據?

我建議您查看是否可以在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. 利用該信息做您想做的一切。

您可以嘗試使用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:14861http://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM