Saturday, 14 February 2009

Using wget To Download Entire Websites

Basic wget Commands:
To download a file from the Internet type:
wget http://www.example.com/downloads.zip

If you are downloading a large file, for example an ISO image, this could take some time. If your Internet connection goes down, then what do you do? You will have to start the download again. If you are downloading a 700Mb ISO image on a slow connection, this could be very annoying! To get around this problem, you can use the -c parameter. This will continue the download after any disruptions. eg:
wget -c http://www.example.com/linux.iso

I have came across some websites that do not allow you to download any files using a download manager. To get around this,
wget -U mozilla http://www.example.com/image.jpg

This will pass wget off as being a Mozilla web browser

Downloading Entire Sites:
Wget is also able to download an entire website. But because this can put a heavy load upon the server, wget will obey the robots.txt file.
wget -r -p http://www.example.com

The -p parameter tells wget to include all files, including images. This will mean that all of the HTML files will look how they should do.

So what if you don't want wget to obey by the robots.txt file? You can simply add -e robots=off to the command like this:
wget -r -p -e robots=off http://www.example.com


As many sites will not let you download the entire site, they will check your browsers identity. To get around this, use -U mozilla as I explained above.
wget -r -p -e robots=off -U mozilla http://www.example.com

A lot of the website owners will not like the fact that you are downloading their entire site. If the server sees that you are downloading a large amount of files, it may automatically add you to it's black list. The way around this is to wait a few seconds after every download. The way to do this using wget is by including --wait=X (where X is the amount of seconds.)

you can also use the parameter: --random-wait to let wget chose a random number of seconds to wait. To include this into the command:
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com


Other Useful wget Parameters:
--limit-rate=20k : Limits the rate at which it downloads files. (20Kb/s)
-b : Continues wget after logging out. Very useful if you are connecting to your home PC via SSH.
-o $HOME/wget_log.txt : Logs the output of the wget command to a text file within your home directory. Useful for if you are using wget in the background, as you can check for any errors that may appear.

9 comments:

  1. My method:
    wget -rkpNl5 www.sysadmin.md

    ReplyDelete
  2. ya but how can you specify how much u want the random wait to vary from? like --random-wait+0.0-40 or something like that??????

    ReplyDelete
  3. This post has been very helpful. I am a total N00b trying to learn the ropes of Ubuntu Linux. I am currently running 11.04 Natty Narwal. on an HP mini 1010nr. My query is after I copy the web page with the wget command where does it store the downloaded site?

    ReplyDelete
  4.  It stores the download in /proc/2144/cwd (if it isn't there just search the filesystem)
    Thanks for the tips from this article. I am downloading the LSL wiki to learn it. But I am having troubles getting a viewer.

    ReplyDelete
  5. also include -k flag, it'll convert all the links and you can view the entire site offline

    ReplyDelete
  6. Awesome collection, Thanks for shearing this,

    ReplyDelete
  7. Your blog provided us with valuable information to work with. Each & every tips of your post are awesome. Thanks a lot for sharing. Keep blogging,
    wordpress web design

    ReplyDelete