Использование 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?

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

Cerin
источник

Ответы:

5

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

meoninterwebz
источник
В вопросе говорится, что некоторые изображения имеют вид /url/path.cgi?query, поэтому ваше предложение не будет их получать.
Чарльз Стюарт
1

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


Я не совсем уверен, почему ваши cgi отклоняются ... Есть ли какие-либо ошибки, выводимые wget? Возможно, сделайте wget verbose ( -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 ...

дорогой
источник
Я должен прекратить ссылаться на опции wget .. собирался указать, --no-parentно я на этом остановлюсь.
Дорогой
0

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

TiansHUo
источник
-1

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


источник
Это загружает все связанные СМИ. Единственный способ использовать wget для загрузки изображений - это загрузить ВСЕ материалы на страницу ?!
Cerin