wget e URLs bonitos

5

Para automatizar as coisas, eu preciso baixar recursivamente uma página da web. Eu estou usando o wget como é provavelmente a ferramenta mais amigável ao programador disponível, usando o sinalizador -r para acionar o link seguinte.

O comando wget, hovewer, não processa URLs bonitas, ou seja, o link , tratando-as como subdiretórios.

Existe uma solução para este problema? (Eu prefiro não modificar o código fonte da página da web)

Felicidades, MH

EDIT: problema resolvido

Obrigado pelas suas respostas perspicazes!

Eu consegui resolver esse problema - fazendo pequenas modificações na página da Web mencionada, no entanto.

O que eu fiz foi simples: usei os recursos de reescrita de URL do meu servidor e os URLs redirecionados do link para link . Então, usando os seguintes sinalizadores wget:

wget --mirror --page-requisites --html-extension --convert-links http://webpage/

Voila! Tudo funciona perfeitamente (existem directiories criadas no processo, ainda, mas é trivial lidar com isso a partir deste ponto com algum tipo de script).

    
por Mike Hordecki 26.06.2009 / 21:18

4 respostas

3

Bem, como o wget deveria saber se index.php / my / pretty não é um diretório? Isso não é de todo óbvio da perspectiva do cliente HTTP.

Talvez você possa wget --exclude-directories resolver isso? Ou talvez verifique wget -nd , que criará um conjunto simples de arquivos (não uma árvore de diretórios). Verifique isso.

    
por 26.06.2009 / 21:28
1

URLs bonitas geralmente não são autossuficientes, elas estão mais frequentemente usando um mecanismo para passar dados de um lado para o outro (normalmente via POST ou cookies) para um aplicativo baseado em framework MVC no backend.

Se você estiver usando várias chamadas do wget, é interessante notar que o wget usa cookies, mas não os salva, por padrão, ... o que significa que cada wget vai começar com um novo cookie e não terá o informação de estado disponível. as opções --save-cookies (filename) e --load-cookies (filename) irão ajudá-lo.

Se o aplicativo da Web estiver usando o POST como um mecânico, é provável que você tenha que escrever um rastreador específico adaptado a esse site.

    
por 26.06.2009 / 21:35
1

Talvez você possa usar o Firefox com o addon iMacros em vez de wget? Tem suporte de linha de comando, mas não pode seguir links automaticamente (você precisaria fazer um script).

link

Eu uso para baixar vários relatórios diariamente.

    
por 26.06.2009 / 23:04
-1

Se você estiver obtendo o mesmo site várias vezes, então você poderia considerar o comando alias, você poderia fazer um alias com um nome amigável para wget com o nome completo do caminho

alias mywget='wget http://domain.com/file/?search&channel=24'

obviamente adicione qualquer opção que você precisar, então seus peeps podem apenas executar o mywget para fazer a função

embora eu não tenha certeza do que acontecerá quando atingir o & como você normalmente colocaria um URL assim em suas citações

espero que ajude

    
por 26.06.2009 / 21:34

Tags