2012-02-13 2 views
28

Я ищу рекомендации для программы, чтобы очистить и загрузить весь корпоративный веб-сайт.Scrape Весь сайт

Сайт работает на CMS, который перестает работать, и его исправление является дорогостоящим, и мы можем перестроить веб-сайт.

Поэтому я хотел бы просто получить весь сайт в виде простого содержимого html/css/image и делать небольшие обновления по мере необходимости до появления нового сайта.

Любые рекомендации?

ответ

19

Рассмотрите HTTrack. Это бесплатная и простая в использовании утилита автономного браузера.

Это позволяет загружать веб-сайт World Wide Web из Интернета в локальный каталог, создавая рекурсивно все каталоги, получая HTML, изображения и другие файлы с сервера на ваш компьютер.

+0

Это идеальное решение для меня и проще, чем вариант командной строки. –

47
wget \ 
    --recursive \ 
    --no-clobber \ 
    --page-requisites \ 
    --html-extension \ 
    --convert-links \ 
    --restrict-file-names=windows \ 
    --domains website.org \ 
    --no-parent \ 
     www.website.com 

Подробнее об этом here.

+1

wget не любит 'convert-links' и' no-clobber', используемые вместе. В этом случае он будет игнорировать «не-клоббер». – BryanH

+1

Если вы хотите очистить сайт тегами HTML5, такими как аудио или видео, вам нужно использовать последнюю версию wget. Поддержка для них была добавлена ​​в 2012-2013 годах. Я только что собрал последние данные из своего Git repo, и он получил необходимый мне веб-сайт, в комплекте с видеофайлами. –

+2

Если '--domains' имеют тот же аргумент, что и имя сайта, подлежащего очистке (в данном случае' website.com', а не '.org')? – user151841

0

Лучший способ - очистить его wget, как это было предложено в ответе @Abhijeet Rastogi. Если вы не знакомы, то Blackwidow - приличный скребок. Я использовал его в прошлом. http://www.sbl.net/

2

wget -r --no-parent http://www.website.com

@shadyabhi «s ответ только дал мне index.html

28

Ничего из вышеперечисленного не получил именно то, что мне нужно (весь сайт и все активы). Это сработало.

Сначала следуйте инструкциям this, чтобы получить wget на OSX.

Затем запустите этот

wget --recursive --html-extension --page-requisites --convert-links http://website.com 
+2

Добавить --no-parent, если вы хотите только от URL-адреса и его поддоменов – magnudae

+0

Убедитесь, что вы включили www. если сайт заставляет www. иначе он ничего не загрузит. –

12

Я знаю, что это супер стар, и я просто хотел бы поставить мои 2 цента в

wget -m -k -K -E -l 7 -t 6 -w 5 http://www.website.com

Немного разъяснения в отношении каждого из переключателей:.

-m По существу, это означает «зеркало сайта», и оно рекурсивно захватывает страницы & изображений, поскольку они пауки через сайт. Он проверяет метку времени, поэтому, если вы запустите wget во второй раз с этим коммутатором, он будет обновлять только файлы/страницы, которые являются более новыми, чем предыдущее время.

-k Это приведет к изменению ссылок в html, чтобы указать на локальные файлы. Если вместо использования таких вещей, как page2.html, в качестве ссылок на вашем сайте вы фактически использовали полный http://www.website.com/page2.html, вам, вероятно, понадобится это/понадобится. Я включаю его только для того, чтобы быть в безопасности - возможно, по крайней мере 1 ссылка вызовет проблему иначе.

-K Опция выше (нижний регистр k) редактирует html. Если вы хотите «нетронутую» версию, используйте этот переключатель, и он сохранит как измененную версию, так и оригинал. Это просто хорошая практика, если что-то не так, и вы хотите сравнить обе версии.Вы всегда можете удалить тот, который вам не нужен позже.

-E Это экономит HTML & CSS с «правильными расширениями». Осторожно с этим - если на вашем сайте не было .html расширений на каждой странице, это добавит его. Однако, если на вашем сайте уже есть файл с чем-то вроде «.htm», вы теперь получите «.htm.html».

-l 7 По умолчанию -m, который мы использовали выше, будет рекурсивно проходить через весь сайт. Обычно это нормально. Но иногда ваш сайт будет иметь бесконечный цикл, в котором wget будет загружаться навсегда. Подумайте о типичном примере website.com/products/jellybeans/sort-by-/name/price/name/price/name/price. В настоящее время это несколько реже - большинство сайтов ведут себя хорошо и не будут этого делать, но, чтобы быть в безопасности, выясните, сколько кликов нужно сделать, чтобы добраться от главной страницы до любой реальной страницы на веб-сайте, это немного (было бы сосать, если бы вы использовали значение 7 и узнали через час, что ваш сайт был на 8 уровней!) и используйте это #. Конечно, если вы знаете, что у вашего сайта есть структура, которая будет вести себя, нет ничего плохого в том, чтобы опустить это и с комфортом знать, что 1 скрытая страница на вашем сайте, которая была 50 уровней глубокой, действительно была найдена.

-t 6 Если попытка получить или загрузить определенную страницу или файл не удалась, это задает количество попыток до того, как оно откажется от этого файла и движется дальше. Обычно вы хотите, чтобы он в конечном итоге отказаться (установить его в 0, если вы хотите, чтобы он пытался навсегда), но вы также не хотите, чтобы он сдавался, если сайт был просто неустойчивым на секунду или два. Я считаю 6 разумным.

-w 5 Это говорит wget, чтобы подождать несколько секунд (в этом случае 5 секунд), прежде чем захватить следующий файл. Часто важно использовать что-то здесь (не менее 1 секунды). Позволь мне объяснить. По умолчанию wget будет захватывать страницы так быстро, как это возможно. Это может быть несколько запросов в секунду, что потенциально может нанести огромную нагрузку на сервер (особенно если сайт написан на PHP, делает MySQL доступ по каждому запросу и не использует кеш). Если веб-сайт находится на совместном хостинге, эта загрузка может заставить кого-то запустить свой хост. Даже на VPS это может привести некоторые сайты на колени. И даже если сам сайт выживет, бомбардировка безумным количеством запросов в течение нескольких секунд может выглядеть как атака DOS, которая вполне может заставить ваш IP-автоблокировать. Если вы не знаете наверняка, что сайт может обрабатывать массовый приток трафика, используйте -w # switch.5, как правило, достаточно безопасны. Даже 1, вероятно, хорошо в большинстве случаев. Но используйте что-то.

+0

Спасибо за все объяснения, отличный ответ! – mdomino

Смежные вопросы