2010-12-16 105 views
0

嗨,我有一个快速的问题,说你想连接到一个网站,并搜索它包含什么链接,你如何用JavaScript做到这一点? 我愿做这样的事情获取网页并使用javascript读取它通过使用javascript

Var everythingAdiffrentPageContains = //Go to some link ex www.msn.se and store it in this variable 

var pageLinks = []; var anchors = everythingAdiffrentPageContains.getElementsByTagName('a'); 
var numAnchors = anchors.length; 
for(var i = 0; i < numAnchors; i++) {  
    pageLinks.push(anchors[i].href); 
} 

我们可以假设在这里,我们有权利存取权限的网站,所以这是一个关心的问题。

换句话说,我想去一些网站,并存储所有的网站超链接在一个数组中,你将如何做到这一点的JavaScript?

感谢

编辑自指出,林试图连接到另一个域。我试图连接到我的局域网内的另一个Apache网络服务器,该网站托管着一个我希望扫描链接的网站。

Unfornuatley我不会对我的web服务器PHP:/但是,一个简单的JavaScript会做

例如去X:/folder/example.html

读它,并存储链接

+0

你的局域网内部与否不很重要,如果它在另一台服务器上,例如地址栏中的地址栏是不同的,那么你不能到达那里,请参阅我的答案中的相同来源策略的链接了解详情。 – 2010-12-16 10:57:58

回答

0

不幸的是 - 你不能这样做。 “我们可以在这里假设我们对该网站拥有访问权限......”从JavaScript的角度来看,这是一个错误的假设,如果该网页位于另一个域。您无法通过JavaScript访问另一个域(不是HTML内容)的内容。由于几个安全原因,这被same-origin policy阻止。

+0

某些在类似浏览器的环境中执行JavaScript的桌面应用程序不受同源策略的约束,例如Windows桌面小工具。如果是这样的话,OP应该指定。 – 2010-12-16 10:34:59

+0

@Andy - 非常真实,在没有任何东西没有提及浏览器的情况下,我假设他们在浏览器中,但我玩的可能性是:) – 2010-12-16 10:35:59

0

我建议你使用JS框架,它可以帮助你轻松地检索元素和DOM。 例如使用mootools的,你可以做到这一点写一些像这样的代码:

var req = new Request.HTML({ 
    url:'./retrieve.php?url=YOURURL', //create a server script to "retrieve" the html of another domain page  
    onSuccess: function(tree,DOMelements) { 
     var links = []; 
     DOMelements.getElements('a').each(function(element){ 
      links.push(element.get('href')); 
     }); 
    } 
}); 
req.send(); 

的retrieve.php页面例如应当这样写:

<?php 
    $url = $_GET['url']; 
    header('Content-type: application/xml'); 
    echo file_get_contents($url); 
?> 
+0

Unfornuatley我没有在我的web服务器上使用PHP,所以我无法使用它:/ – johan 2010-12-16 10:53:39

+0

您可以使用服务器端脚本语言lang;)..它只是一个例子来解释如何使用服务器端脚本检索外部网页html。如果你想在js中这样做,你不能。 :) 你在你的网络服务器上有什么? – stecb 2010-12-16 11:00:45

+0

你在服务器上有什么_do_? – Bojangles 2010-12-16 11:03:12