Ignorar "outros" domínios ao fazer o download com o wget?


13

Gostaria de rastrear links em www.website.com/XYZ e fazer o download apenas dos links em www.website.com/ABC.

Estou usando o seguinte comando wget para obter os arquivos que desejo:

wget  -I ABC -r -e robots=off --wait 0.25  http://www.website.com/XYZ

Isso funciona perfeitamente quando eu uso o wget 1.13.4. Mas o problema é que eu tenho que usar esse comando em um servidor que tenha o wget 1.11 e, quando eu uso o mesmo comando, ele acaba baixando domínios adicionais, como:

www.website.de 
www.website.it 
...

Como posso evitar esse problema? Eu tentei usar

--exclude domains=www.website.de,www.website.it

no entanto, continuou baixando esses domínios.

Observe também que não posso usá-lo, --no-parentpois os arquivos desejados estão no nível superior (quero arquivos em website.com/ABC pesquisando links em website.com/XYZ).

Alguma dica?


Não use URLs "falsos" e não use o URL de um site que não tem nada a ver com o seu problema. Os domínios que você listou não são de forma alguma "subdomínios", são apenas domínios diferentes, provavelmente pertencentes à mesma empresa.
guntbert

Algo está errado aqui. wgetnão deve cruzar hosts por padrão e você precisa da opção -H/ --span-hostspara cruzar hosts ao executar um wget recursivo. "www.website.com" é um host completamente diferente de "www.website.de".
Jw013 10/10

@ Guntbert desculpe, eu pensei que dar o URL real seria um problema. é claro que o site que quero rastrear não é website.com. mas quando rastreio example.com, também vejo exemplo.it, exemplo.de no diretório principal (o mesmo nível de exemplo.com).
user2779485

@ jw013 como eu disse acima, quando eu apenas dou www.example.com/x, ele também rastreia www.example.de, www.example.it. Mas isso só acontece com o wget 1.11 e não com o 1,13. É por isso que estou muito confuso.
user2779485

Isso parece um bug: o wget 1.11 não deve se comportar de maneira diferente, -Hsempre foi solicitado a ser executado fora do host original. Será que -D www.website.comajuda?
Gilles 'SO- stop being evil'

Respostas:


5

Isto está errado:

--exclude domains=www.website.de,www.website.it

O caminho certo é:

--exclude-domains www.website.de,www.website.it

Na página do manual wget:

--exclude-domains domain-list
      Specify the domains that are not to be followed.

a lista não deve ser separada por komma?
rubo77

@ rubo77 Você está certo, eu mudei isso.
Daniel Werner

17

Você pode tentar --max-redirect 0ou usar --domains example.com o oposto de --exclude-domains example.com.

Vejo:

  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -np, --no-parent                 don't ascend to the parent directory.
  --max-redirect                   maximum redirections allowed per page.

5
Isto é melhor do que a resposta aceita se você gosta de branco listando os domínios em vez de lista negra
yunzen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.