Ігнорувати "інші" домени під час завантаження з 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 переглядали посилання на веб-сайт.com/XYZ).

Якісь підказки?


Не використовуйте "підроблені" URL-адреси та не використовуйте URL-адресу веб-сайту, який не має нічого спільного з вашою проблемою. Перелічені вами домени жодним чином не є «субдоменами», вони є лише різними доменами, ймовірно, належать одній компанії.
guntbert

Щось тут не так. wgetне повинен перетинати хостів за замовчуванням, і вам потрібно -H/ --span-hostsпараметр перекреслювати хости, виконуючи рекурсивний wget. "www.website.com" - це зовсім інший хост від "www.website.de".
jw013

@guntbert вибачте, я думав, що дати справжній URL буде проблемою. Звичайно, веб-сайт, на який я хочу сканувати, - це не веб-сайт.com. але коли я сканую example.com, я також бачу example.it, example.de в головному каталозі (той самий рівень з example.com).
користувач2779485

@ jw013, як я вже говорив вище, коли я просто даю www.example.com/x, він також сканує www.example.de, www.example.it. Але це трапляється лише з wget 1.11, а не 1.13 .. Тому я дуже плутаюся.
користувач2779485

Це схоже на помилку: 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.