воскресенье, 8 июня 2014 г.

WGET для скачивания сайтов

Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:

wget -r -k -l 7 -p -E -nc  http://www.oracle.com/

После выполнения данной команды в директорию oracle.com будет загружена локальная копия сайта http://www.oracle.com.

Чтобы открыть главную страницу сайта нужно открыть файл index.html.

Рассмотрим используемые параметры:


-r    —    указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.

-k    —    используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).

-p    —    указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).

-l    —    определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.

-E    —    добавлять к загруженным файлам расширение .html.

-nc    —    при использовании данного параметра существующие файлы не будут перезаписаны.
Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.



wget -e robots=off --wait 1 -x --user=xxx --password=xxx -m -k http://domain.to.mirror/

-e robots=off obviously disables robots
--wait 1 forces a pause between gets (so the site doesn't get hammered)
--user and --password: self-evident
-x creates a local directory structure which "mirrors" (see what I did there?) the directory structure on the site you're mirroring
-m turns on mirror mode: "turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings" (from the man page)
-k converts links after download so that URLs in the mirrored files reference local files



Примеры команд:


wget -U 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' -r -k -l 7 -p -nc http://repo1.maven.org/maven2/

wget -w 20 --user-agent="Mozilla/4.5 (X11; U; Linux x86_64; en-US)" http://repo1.maven.org/maven2/

wget -r -k -l0 -np -E -p -nc -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" http://repo1.maven.org/maven2/

wget -r -k -l7 -с -nd --no-parent http://repo1.maven.org/maven2/

wget  --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"  http://mazdik.ru

wget -d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --header="Referer: http://xmodulo.com/" --header="Accept-Encoding: compress, gzip" -r -e robots=off --no-parent --reject="index.html*" http://repo1.maven.org/maven2/HTTPClient/HTTPClient/

wget -erobots=off http://your.site.here

wget -e robots=off --wait 1 http://your.site.here


Можно создать примерно такой файл:

# cat ~/.wgetrc

header = Accept-Language: en-us,en;q=0.5
header = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
header = Connection: keep-alive
user_agent = Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
referer = /
robots = off


Или так:

# cat ~/.wgetrc

header = Accept-Language: ru,en-US;q=0.8,en;q=0.6
header = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
header = Connection: keep-alive
header = Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
header = Accept-Encoding: gzip, deflate, sdch
user_agent = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
referer = /
robots = off


И после этого запускаем закачку:

wget -r -k -l0 -np -E -p -nc -m --referer=repo1.maven.org/maven2/ http://repo1.maven.org/maven2/