Por que o wget não obtém todas as páginas ao espelhar este site?

0

Eu quero espelhar completamente o seguinte site: link

Eu uso o seguinte comando wget:

wget -m http://tinaztitiz.com

O site é um CMS personalizado e contém muitas páginas com o seguinte formato de URLs:

http://tinaztitiz.com/yazi.php?id=943
http://tinaztitiz.com/yazi.php?id=762

Curiosamente, o wget recebe algumas dessas páginas, mas não todas. Eu me pergunto o que pode ser a razão disso?

Nota: não há restrições devido ao robots.txt.

Atualização:

Olhando para o código-fonte do site, notei que as páginas que não são detectadas e rastreadas por wget têm uma propriedade comum. Seus urls de âncora são escritos pela seguinte função de javascript:

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

Portanto, parece que o wget não pode detectar tags de âncora que são geradas dinamicamente.

    
por Mert Nuhoglu 16.04.2012 / 09:14

2 respostas

1

O Javascript é processado pelo navegador. wget faz exatamente o que deve fazer, buscando o conteúdo. Os navegadores fazem a mesma coisa inicialmente. Eles obtêm o conteúdo exatamente como você postou acima. Mas, em seguida, renderiza a parte Javascript e cria os links. wget não pode fazer isso. Então, não, você não pode obter links que são gerados dinamicamente, usando apenas wget. Você pode tentar algo como PhantomJS embora.

    
por 16.04.2012 / 11:04
0

Como já foi dito, o wget não é capaz de gerar páginas que usem o código JavaScript do lado do cliente. Se você conhece os fundamentos da programação em Python, recomendo usar a biblioteca Python Scrapy para rastrear o site, junto com Selenium , que é capaz de usar um navegador externo para gerar páginas dinâmicas. Você pode fazer tudo isso com uma pequena quantidade de código Python. Veja por exemplo Coleção de fragmentos de código .

    
por 19.04.2013 / 12:36