Zignorować „inne” domeny podczas pobierania za pomocą wget?

13

Chciałbym indeksować linki pod www.website.com/XYZ i pobierać tylko te linki, które znajdują się pod www.website.com/ABC.

Używam następującego polecenia wget, aby uzyskać potrzebne pliki:

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

Działa to doskonale, gdy używam wget 1.13.4. Ale problem polega na tym, że muszę użyć tego polecenia na serwerze, który ma wget 1.11, a kiedy używam tego samego polecenia, kończy się pobieranie dodatkowych domen, takich jak:

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

Jak mogę uniknąć tego problemu? Próbowałem użyć

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

jednak nadal pobierał te domeny.

Pamiętaj też, że nie mogę używać, --no-parentponieważ pliki, które chcę, znajdują się na wyższym poziomie (chcę pliki w witrynie website.com/ABC, indeksując linki w witrynie website.com/XYZ).

Jakieś wskazówki?

użytkownik2779485
źródło
Nie używaj „fałszywych” adresów URL i nie używaj adresu URL witryny, która nie ma nic wspólnego z twoim problemem. Wymienione domeny nie są w żaden sposób „subdomenami”, są to po prostu różne domeny, prawdopodobnie należące do tej samej firmy.
guntbert,
Coś tu nie gra. wgetnie powinna domyślnie przechodzić między hostami i potrzebujesz opcji -H/ --span-hosts, aby przenosić hosty podczas wykonywania rekurencyjnego wgeta. „www.website.com” to zupełnie inny host niż „www.website.de”.
jw013,
@ guntbert przepraszam, myślałem, że podanie prawdziwego adresu URL będzie problemem. oczywiście witryna, którą chcę indeksować, nie jest witryną.com. ale podczas indeksowania example.com widzę również example.it, example.de w katalogu głównym (na tym samym poziomie co example.com).
user2779485,
@ jw013, jak powiedziałem powyżej, kiedy podam www.example.com/x, to również indeksuje www.example.de, www.example.it. ALE dzieje się tak tylko z wget 1.11, a nie 1.13. Dlatego jestem bardzo zdezorientowany.
user2779485,
Wygląda to na błąd: wget 1.11 nie powinien zachowywać się inaczej, -Hzawsze był wymagany do ponownego uruchomienia poza oryginalnym hostem. Czy -D www.website.compomaga
Gilles „SO- przestań być zły”

Odpowiedzi:

5

To jest źle:

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

Właściwy sposób to:

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

Ze strony man wget:

--exclude-domains domain-list
      Specify the domains that are not to be followed.
Radu Rădeanu
źródło
czy lista nie może być oddzielona od Komma?
rubo77
@ rubo77 Masz rację, zmieniłem to.
Daniel Werner,
18

Możesz spróbować --max-redirect 0lub użyć --domains example.com jako przeciwieństwo --exclude-domains example.com.

Widzieć:

  -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.
kenorb
źródło
5
To jest lepsze niż zaakceptowana odpowiedź, jeśli lubisz umieszczać domeny na białej liście zamiast czarnej listy
yunzen