11

Как вы указываете 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?

РЕДАКТИРОВАТЬ: Кроме того, некоторые страницы являются динамическими и генерируются с помощью сценария CGI (например, img.cgi?fo9s0f989wefw90e). Даже если я добавлю cgi в свой список принятия (например, --accept = jpg, jpeg, html, cgi), они все равно будут отклонены. Это можно обойти?

4 ответа4

3

Почему бы вам не попробовать использовать wget -A jpg, jpeg -r http://site.com ?

1

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


Я не совсем уверен, почему ваши CGI отклоняются ... Есть ли какие-либо ошибки, выводимые wget? Возможно, сделайте wget многословным (-v) и посмотрите. Может быть лучше, как отдельный вопрос.

Тем не менее, если вы не заботитесь о пропускной способности и загружаете много, то удалите то, что вам не нужно после, это не имеет значения.


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

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

-E

--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 также может быть полезным из-за этих URL-адресов cgi ...

0

Вы также можете использовать MetaProducts Offline Explorer без программирования

-1

Попробуйте добавить параметр --page-requisites

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .