2010-12-16 32 views
0

Hallo, ich habe eine kurze Frage, sagen Sie, dass Sie eine Verbindung zu einer Website und suchen Sie nach den Links, die es enthält, wie machst du das mit Javascript? Ich möchte so etwas wie diesesHolen Sie sich die Webseite und lesen Sie durch 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); 
} 

tun können wir hier davon aus, dass wir Zugang Rechte an der Seite haben, so nicht ein Anliegen ist.

Mit anderen Worten möchte ich auf eine Website gehen und speichern Sie alle diese Websites Hyperlinks in einem Array, wie würden Sie das in Javascript tun?

Dank

EDIT seit Im wies darauf hin, nicht versucht, in einer anderen Domäne zu verbinden. Ich versuche, mich mit einem anderen Apache-Webserver in meinem LAN zu verbinden, der eine Website hostet, die ich nach Links durchsuchen möchte.

Unfornuatley Ich habe keine PHP auf meinem Webserver:/Aber ein einfaches Javascript wäre es

zum Beispiel tun, um X gehen: /folder/example.html

es lesen und speichern Sie die Links

+0

In Ihrem LAN oder nicht nicht egal, ob es auf einem anderen Server ist, z die Adressleiste in Ihrer URL ist anders, dann können Sie nicht dorthin gelangen, siehe den Link zu der gleichen Herkunftsrichtlinie in meiner Antwort für Details. –

Antwort

0

Leider - Sie können dies nicht tun. "Wir können hier annehmen, dass wir Zugriffsrechte auf die Site haben" ... das ist aus JavaScript-Sicht eine falsche Annahme, wenn sich die Seite auf einer anderen Domain befindet. Sie können einfach nicht über JavaScript auf Inhalte einer anderen Domain zugreifen (nicht auf HTML-Inhalte). Es wird durch die same-origin policy verhindert, die aus verschiedenen Sicherheitsgründen vorhanden ist.

+0

Einige Desktop-Anwendungen, die JavaScript in einem browserähnlichen Kontext ausführen, sind nicht an dieselbe Richtlinie gebunden, z. B. an Windows-Desktop-Gadgets. Wenn dies der Fall ist, sollte das OP angeben. –

+0

@Andy - sehr wahr, in der Abwesenheit von irgendetwas nicht-Browser erwähnt, ich nehme an, sie sind in einem Browser, aber ich spiele die Chancen dort :) –

0

Ich empfehle Ihnen, ein JS-Framework zu verwenden, das Ihnen hilft, Elemente abzurufen und Sachen mit DOM leicht zu tun. Zum Beispiel Mootools Sie erreichen könnte dies zu schreiben einige Code wie folgt aus:

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(); 

Die retrieve.php Seite beispielsweise auf diese Weise geschrieben werden sollte:

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

Unfornuatley Ich habe kein PHP auf meinem Webserver, so kann ich nicht verwenden it:/ – johan

+0

Sie können die serverseitige Skriptsprache verwenden, die Sie wollen;) .. es ist nur ein Beispiel, um zu erklären, wie man eine externe Webseite html mit einem serverseitigen Skript abruft. Wenn Sie das JUST in js tun wollen, können Sie nicht. :) Was hast du auf deinem Webserver? – stecb

+0

Was haben Sie auf Ihrem Server? – Bojangles

Verwandte Themen