2013-10-19 55 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部分。