2013-10-19 56 views
0

我建設與幻象/卡斯帕刮刀內。Phantomjs/Casperjs從JS腳本獲取URL

在這一點上,我需要提取出現在頁面中的URL只在js腳本中。網頁源代碼的

例子:

<script> 
    queueRequest('URL.aspx?var1='+VAR1+'&var2='+VAR2, getPageMenu'); 
</script> 

我沒有問題,評估VAR1VAR2,因爲他們是在頁面上下文,但我需要的URL,這是硬編碼,並沒有提到它。根據我所在的頁面,URL當然是不同的,我無法猜測它。有任何想法嗎?

我的想法:

  1. 由於URL被稱爲在頁面加載,以填補一個div王氏AJAX,我想可能的捕捉XHR請求,但我不知道怎麼辦。

  2. 我設法使用document.getElementsByTagName('script')獲得我需要的腳本。這可能是一種方法,但是我怎麼才能從200多行中得到我需要的行呢? (具有queueRequest開始)

所以做出清楚我的問題:

這想法是好,1或2?

if 1:如何使用casper捕獲請求URL?

if 2:如何在腳本中獲得正確的行?

回答

2

如果你想搜索你的腳本塊,你可以嘗試這樣的事:

found = null; 
scripts = document.getElementsByTagName('script'); 

for (i = 0; i < scripts.length; i++) 
{ 
    matches = /queueRequest\('(.+)\?/.exec(scripts[i].innerText) 

    if (matches) 
    { 
    found = matches[1]; 
    break; 
    } 
} 

alert(found); 

有可能實現同樣的事情,更嚴格的方法,但在正則表達式大致你追求的。請注意,這隻會讓你在嵌入式腳本塊中首次出現queueRequest('something.something?...)的URL部分。