Ich möchte folgende Webseite komplett spiegeln:http://tinaztitiz.com
Ich verwende den folgenden wget-Befehl:
wget -m http://tinaztitiz.com
Die Website ist ein benutzerdefiniertes CMS und enthält viele Seiten mit URLs im folgenden Format:
http://tinaztitiz.com/yazi.php?id=943
http://tinaztitiz.com/yazi.php?id=762
Merkwürdigerweise ruft wget einige dieser Seiten ab, aber nicht alle. Ich frage mich, was der Grund dafür sein könnte.
Hinweis: Es gibt keine Einschränkung durch robots.txt.
Aktualisieren:
Beim Betrachten des Quellcodes der Website fiel mir auf, dass die Seiten, die von wget nicht erkannt und gecrawlt werden, eine gemeinsame Eigenschaft haben. Ihre Anker-URLs werden von der folgenden JavaScript-Funktion geschrieben:
function yazilar()
{
var ab = '</a><br class=\"hide\" />';
var aa = '<a class=' + '\"nav sub\" href=\"kategori.php?id=';
var ac = '';
var arr = new Array();
arr[0] = '12\">'+ac+' Belâgat';
arr[1] = '15\">'+ac+' Bilim ve Teknoloji';
//...
maxi = 14;
for(i=0;i<maxi;i++) {
a = aa + arr[i] + ab;
document.writeln(a);
}
}
Es scheint also, dass wget dynamisch generierte Anker-Tags nicht erkennen kann.
Antwort1
Javascript wird vom Browser gerendert. wget
tut genau das, was es tun soll, nämlich den Inhalt abrufen. Browser machen zunächst dasselbe. Sie erhalten den Inhalt genau so, wie Sie oben geschrieben haben. Aber dann rendert es den Javascript
Teil und erstellt die Links. wget
Das geht nicht. Also, nein, Sie können keine dynamisch generierten Links abrufen, indem Sie nur wget verwenden. Sie können etwas wie Folgendes versuchen:PhantomJSobwohl.
Antwort2
Wie bereits erwähnt, kann wget keine Seiten generieren, die clientseitigen JavaScript-Code verwenden. Wenn Sie die Grundlagen der Python-Programmierung kennen, empfehle ich die Verwendung der Python-BibliothekSchabrackezum Crawlen der Website, zusammen mitSelen, das einen externen Browser verwenden kann, um dynamische Seiten zu generieren. All dies können Sie mit einer winzigen Menge Python-Code tun. Siehe zum Beispiel Code Snippets Sammlung.