wget рекурсивне завантаження, але я не хочу переходити по всіх посиланнях


10

Я намагаюся віддзеркалити веб-сайт за допомогою wget, але я не хочу завантажувати багато файлів, тому я використовую --rejectопцію wget, щоб не зберігати всі файли. Однак wget все одно завантажить усі файли, а потім видалить файл, якщо він відповідає моєму параметру відхилення.

Чи є спосіб сказати wget не переходити до певних посилань, якщо вони відповідають одній підстановці оболонки? Якщо wget не може цього зробити, чи є якась інша поширена команда Linux, яка може це зробити?


3
Опублікуйте, будь ласка, всю свою команду. Це значно полегшує усунення несправностей.
Джозеф Керн

Відповіді:


9

Ви також можете спробувати HTTrack, який має, IMO, більш гнучку та інтуїтивну логіку включення / виключення. Щось на зразок цього...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Правила застосовуватимуться в порядку, і перевершать попередні правила ...

  1. Виключіть усе
  2. Але включіть https://example.com/images/ *
  3. Але виключіть що-небудь, що закінчується SWF

Чи завантажує це CSS, зображення тощо з оновленими URL-адресами?
брандізі


1

У розділі --reject 'man wget':

"Зауважте, що якщо будь-який із символів підстановки *,?, [Або] відображається в елементі списку або перейменування, це буде розглянуто як шаблон, а не як суфікс."

Якщо ви робите це, ви можете навести приклади використовуваних моделей і того, що, на вашу думку, повинно відповідати, а це не відповідає. Ви кажете, що вони відповідають, але ви впевнені?

Також переконайтеся, що ви вказали цей список у лапках, щоб оболонка не розширювала ці підмітні знаки, перш ніж передавати аргументи (аргументи) у wget.

Навіть якщо ваша система не має версію 1.12, читати типи файлів розділі керівництва тут . Відповідно до журналу змін, технічне обслуговування додало кілька застережень:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.

Параметри --reject є в лапках. Я бачу, що файли відповідають правильним файлам, оскільки після завантаження файл wget видаляє файл. Я просто хочу зупинити його завантаження файлу, в першу чергу
Рорі

Це файли htm (l)? Відповідно до посібника, вони завантажуються незалежно від того.
Кайл Брандт

Так. Файли, які я хочу відхилити, - це HTML-файли. Я знаю, що вони завантажуються незалежно від того. Чи є якийсь спосіб запобігти цьому?
Рорі

1

Ви можете обмежити рівень рекурсії за допомогою -l NUMBERопції, якщо це допоможе (не дотримуючись певного шаблону регулярних виразів).

Рівень "2" завантажує index.html, його підрозділи / зображення / тощо та посилання на підрозділі.


ні, що не допомогло б у цьому випадку
Рорі

1

як ви користуєтесь wget? спробуйте використовувати його таким чином:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

ця команда буде ігнорувати файли gif та jpg та swf.


Файли, які Рорі Макканн хоче відхилити, - це HTML-файли, але він хоче зберегти інші файли HTML, тому цей синтаксис не стосується його запитання.
Ройс Вільямс

1

Одним із завдань було б запустити wget через проксі-сервер. Встановіть проксі для заборони певних шаблонів. Це заблокувало б, щоб Wget не завантажував їх в першу чергу.

wget завантажить та видалить файл, що відповідає шаблону -R. він також може відповідати шаблонам, а не лише розширенням або частинам імен файлів. Однак це не перешкоджає завантаженню wget спочатку та видаленню пізніше.

httrack має деякі приємні функції, але, на мій досвід, спосіб, коли він зберігає "файл", може бути трохи химерним, наприклад, якщо httrack трапляється через index.asp? type = BASIC & PAGEID = 2234234,
він може зберегти його, але вам потрібно сказати, щоб зберегти частини запиту,
наприклад,% h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
@ є заповнювачем місця знака питання, ви можете перейменувати файли пізніше, чи, можливо, замість цього уникнути знака питання? Проблема полягає в тому, що.% t додасть ".html" до кінця вашого URI, у якого спочатку не було ".html". Якщо ви знімете його, зображення, які завантажують httrack, не матимуть розширення для файлу.

Краще використовувати wget IMHO

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.