Використовуючи Wget для рекурсивного сканування сайту та завантаження зображень


13

Як ви інструктуєте wget рекурсивно сканувати веб-сайт і завантажувати лише певні типи зображень?

Я намагався використовувати це для сканування сайту та завантажувати лише зображення Jpeg:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Однак, незважаючи на те, що page1.html містить сотні посилань на підсторінки, які самі по собі мають прямі посилання на зображення, wget повідомляє про такі речі, як "Видалення subpage13.html, оскільки його слід відхилити", і ніколи не завантажує жодні зображення, оскільки жодне не має прямого зв'язку зі стартової сторінки.

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

EDIT: Крім того, деякі сторінки є динамічними та генеруються за допомогою сценарію CGI (наприклад, img.cgi? Fo9s0f989wefw90e). Навіть якщо я додаю cgi до свого списку акцептів (наприклад, --accept = jpg, jpeg, html, cgi), вони все одно відхиляються. Чи є шлях до цього?

Відповіді:


5

Чому б не спробувати використовувати wget -A jpg,jpeg -r http://example.com?


У запитанні йдеться про те, що деякі зображення мають форму /url/path.cgi?query, тож ваша пропозиція їх не отримає.
Чарльз Стюарт

1

Як ви очікуєте, що wget дізнається вміст subpage13.html (і так jpg, на який він посилається), якщо його заборонено завантажувати. Я пропоную вам дозволити html, отримати те, що ви хочете, а потім видалити те, що ви не хочете.


Я не зовсім впевнений, чому ваші cgi відхиляються ... Чи є якісь помилки, виведені wget? Можливо, зробіть wget verbose ( -v) і подивіться. Можливо, найкраще як окреме питання.

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


Також перевірити --html-extension

На чоловіковій сторінці:

--html-розширення

Якщо завантажено файл типу application / xhtml + xml або text / html, а URL-адреса не закінчується на регулярним виразом. [Hh] [Tt] [Mm] [Ll]? ", Цей параметр призведе до отримання суфіксу .html додається до імені локального файлу. Це корисно, наприклад, при дзеркальному відображенні віддаленого сайту, який використовує .asp сторінки, але ви хочете, щоб відображені сторінки відображалися на вашому сервісі Apache. Ще одне корисне використання для цього - під час завантаження матеріалів, створених CGI. URL-адреса на зразок http://site.com/article.cgi?25 буде збережена як article.cgi? 25.html.

Зауважте, що змінені таким чином назви файлів будуть завантажуватися щоразу, коли ви переглядаєте сайт, тому що Wget не може сказати, що локальний файл X.html відповідає віддаленій URL-адресі X (оскільки він ще не знає, що URL-адреса створює вихід типу text / html або application / xhtml + xml. Щоб запобігти цьому повторному завантаженню, потрібно використовувати -k і -K, щоб оригінальна версія файлу була збережена як X.orig.


--restrict-file-names=unix може бути також корисним через ці CGI-адреси ...


Я повинен припинити зв'язувати варіанти wget .. збирався зазначити, --no-parentале я зупинюсь на цьому.
Прайс

0

Також ви можете використовувати MetaProducts Offline Explorer без програмування


-1

Спробуйте додати --page-requisitesпараметр


Це завантажує всі пов'язані медіа. Єдиний спосіб використовувати wget для завантаження зображень - це завантажувати ВСІ вміст на сторінку ?!
Серін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.