Fazer o download de todos os Urls acessíveis sob um determinado domínio com o wget sem salvar as páginas reais?

4

Oi tentando determinar todos os URLs válidos em um determinado domínio sem que o site seja espelhado localmente.

As pessoas geralmente querem fazer o download de todas as páginas, mas eu só quero obter uma lista dos URLs diretos em um determinado domínio (por exemplo, www.example.com), que seria algo como www.example.com/page1, www .example.com / page2, etc.

Existe uma maneira de usar o wget para fazer isso? ou existe uma ferramenta melhor para isso?

    
por fccoelho 24.09.2013 / 20:39

2 respostas

2

Aqui está um script cru:

curl -s whaturl |
  grep -o "<a href=[^>]*>" |
  sed -r 's/<a href="([^"]*)".*>//' |
  sort -u

O grep escolhe todos os href s. O sed seleciona a parte do URL do href . O sort filtra links duplicados.

Ele também funcionará com wget -O - no lugar de curl -s .

Exemplo de saída:

$ curl -s http://stackexchange.com/users/148837/lesmana?tab=accounts | grep -o "<a href=[^>]*>" | sed -r 's/<a href="([^"]*)".*>//' | sort -u
/
/about
/about/contact
/blogs
/leagues
/legal
/legal/privacy-policy
/newsletters
/questions
/sites
/users/148837/lesmana
/users/148837/lesmana?tab=activity
/users/148837/lesmana?tab=favorites
/users/148837/lesmana?tab=reputation
/users/148837/lesmana?tab=subscriptions
/users/148837/lesmana?tab=top
/users/login?returnurl=%2fusers%2f148837%2flesmana%3ftab%3daccounts
http://area51.stackexchange.com/users/16563/lesmana
http://askubuntu.com/users/1366/
http://blog.stackexchange.com
http://blog.stackoverflow.com/2009/06/attribution-required/
http://chat.stackexchange.com/
http://creativecommons.org/licenses/by-sa/3.0/
http://gaming.stackexchange.com/users/2790/
http://meta.stackoverflow.com
http://meta.stackoverflow.com/users/147747/
http://programmers.stackexchange.com/users/116/
http://serverfault.com/users/45166/
http://stackoverflow.com/users/360899/
http://superuser.com/users/39401/
http://twitter.com/stackexchange
http://unix.stackexchange.com/users/1170/
http://www.facebook.com/stackexchange
https://plus.google.com/+StackExchange
    
por 24.09.2013 / 21:16
4

Ok, eu tive que encontrar minha própria resposta:

a ferramenta que eu uso foi httrack .

httrack -p0 -r2 -d www.example.com
  • a opção -p0 diz apenas para digitalizar (não salvar páginas);
  • a opção -rx informa a profundidade da pesquisa
  • as opções -d informam para permanecer no mesmo domínio principal

há até um -% L para adicionar o URL varrido ao arquivo especificado, mas parece que não funciona. Mas isso não é um problema, porque sob o diretório hts-cache você pode encontrar um arquivo TSV chamado new.txt contendo todos os urls visitados e algumas informações adicionais sobre ele. Eu poderia extrair as URLs dele com o seguinte código python:

with open("hts-cache/new.txt") as f:
    t = csv.DictReader(f,delimiter='\t')
    for l in t:
        print l['URL']
    
por 24.09.2013 / 21:49