Игнорировать «другие» домены при загрузке с помощью wget?


13

Я хочу сканировать ссылки по адресу www.website.com/XYZ и загружать только те ссылки, которые находятся по адресу www.website.com/ABC.

Я использую следующую команду wget для получения нужных мне файлов:

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

Это прекрасно работает, когда я использую wget 1.13.4. Но проблема в том, что я должен использовать эту команду на сервере с wget 1.11, и когда я использую ту же команду, она заканчивает тем, что загружает дополнительные домены, такие как:

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

Как я могу избежать этой проблемы? Я пытался с помощью

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

однако он продолжал загружать эти домены.

Также обратите внимание, что я не могу использовать, --no-parentпоскольку нужные мне файлы находятся на верхнем уровне (я хочу файлы на сайте website.com/ABC, просматривая ссылки на сайте website.com/XYZ).

Есть намеки?


Не используйте «поддельные» URL-адреса и не используйте URL-адрес сайта, который не имеет ничего общего с вашей проблемой. Указанные вами домены ни в коем случае не являются «поддоменами», это просто разные домены, вероятно принадлежащие одной и той же компании.
Гюнтберт

Что-то здесь не так. wgetне должен пересекать хосты по умолчанию, и вам нужна опция -H/ --span-hostsдля пересечения хостов при выполнении рекурсивного wget. «www.website.com» - это хост, совершенно отличающийся от «www.website.de».
jw013 10.10.13

@ Guntbert Извините, я думал, что дать реальный URL будет проблемой. Конечно, сайт, который я хочу сканировать, не является website.com. но когда я сканирую example.com, я также вижу example.it, example.de в главном каталоге (на том же уровне, что и example.com).
user2779485

@ jw013, как я сказал выше, когда я просто даю www.example.com/x, он также сканирует www.example.de, www.example.it. НО это происходит только с wget 1.11, а не 1.13. Поэтому я очень запутался.
user2779485

Это похоже на ошибку: wget 1.11 не должен вести себя по-другому, -Hвсегда требовалось выполнять рекурсию вне исходного хоста. Помогает -D www.website.com?
Жиль "ТАК - перестань быть злым"

Ответы:


5

Это не правильно:

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

Правильный путь:

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

Со страницы руководства wget:

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

не должен ли список быть разделенным коммой?
rubo77

@ rubo77 Ты прав, я это изменил.
Даниэль Вернер

18

Вы можете попробовать --max-redirect 0или использовать --domains example.com как противоположность --exclude-domains example.com.

Видеть:

  -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
Это лучше, чем принятый ответ, если вам нравится белый список доменов вместо черного списка
yunzen
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.