"Andere" Domains beim Download mit wget ignorieren?

13

Ich möchte Links unter www.website.com/XYZ crawlen und nur die Links unter www.website.com/ABC herunterladen.

Ich benutze den folgenden Befehl wget, um die gewünschten Dateien zu erhalten:

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

Dies funktioniert einwandfrei, wenn ich wget 1.13.4 verwende. Das Problem ist jedoch, dass ich diesen Befehl auf einem Server mit wget 1.11 verwenden muss. Wenn ich denselben Befehl verwende, werden am Ende zusätzliche Domänen heruntergeladen, z.

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

Wie kann ich dieses Problem vermeiden? Ich habe versucht mit

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

Diese Domains wurden jedoch weiterhin heruntergeladen.

Beachten Sie auch, dass ich nicht verwenden kann, --no-parentda sich die gewünschten Dateien auf einer höheren Ebene befinden (ich möchte Dateien unter website.com/ABC, indem ich Links unter website.com/XYZ crawle).

Irgendwelche Hinweise?

user2779485
quelle
Verwenden Sie keine "gefälschten" URLs und verwenden Sie nicht die URL einer Site, die nichts mit Ihrem Problem zu tun hat. Die von Ihnen aufgelisteten Domains sind in keiner Weise "Subdomains", es handelt sich lediglich um verschiedene Domains, die wahrscheinlich zur selben Firma gehören.
guntbert
Da stimmt etwas nicht. wgetsollte standardmäßig keine Hosts kreuzen, und Sie benötigen die Option -H/ --span-hosts, um Hosts zu kreuzen, wenn Sie ein rekursives wget ausführen. "www.website.com" ist ein völlig anderer Host als "www.website.de".
JW013
@guntbert sorry, ich dachte, die echte URL zu geben wäre ein Problem. Natürlich ist die Website, die ich crawlen möchte, nicht website.com. Aber wenn ich example.com crawle, sehe ich auch example.it, example.de im Hauptverzeichnis (dieselbe Ebene wie example.com).
User2779485
@ jw013 wie ich oben sagte, wenn ich nur www.example.com/x gebe, kriecht es auch www.example.de, www.example.it. ABER das passiert nur mit wget 1.11 und nicht mit 1.13. Deshalb bin ich sehr verwirrt.
user2779485
Das sieht nach einem Bug aus: wget 1.11 sollte sich nicht anders verhalten, musste -Hsich immer außerhalb des ursprünglichen Hosts wiederholen. Hilft das -D www.website.com?
Gilles 'SO- hör auf böse zu sein'

Antworten:

5

Das ist falsch:

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

Der richtige Weg ist:

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

Von der wget man Seite:

--exclude-domains domain-list
      Specify the domains that are not to be followed.
Radu Rădeanu
quelle
darf die liste nicht komma getrennt werden?
Rubo77
@ rubo77 Du hast recht, das habe ich geändert.
Daniel Werner
17

Sie können versuchen --max-redirect 0oder --domains example.com als Gegenteil von verwenden --exclude-domains example.com.

Sehen:

  -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
quelle
5
Dies ist besser als die akzeptierte Antwort, wenn Sie die Domains lieber in der weißen Liste als in der schwarzen Liste
anzeigen möchten