433

How can I download all pages from a website?

Any platform is fine.

9
  • 2
    Check out serverfault.com/questions/45096/website-backup-and-download on Server Fault. Jul 28, 2009 at 13:55
  • @tnorthcutt, I'm surprised too. If I don't recall awfully wrong, my Wget answer used to be the accepted one, and this looked like a settled thing. I'm not complaining though — all of a sudden the renewed attention gave me more than the bounty's worth of rep. :P
    – Jonik
    Sep 17, 2009 at 6:05
  • did you try IDM? superuser.com/questions/14403/… my post is buried down. What did you find missing in IDM?
    – Lazer
    Sep 21, 2009 at 10:30
  • 5
    @joe: Might help if you'd give details about what the missing features are... Sep 23, 2009 at 11:06
  • browse-offline.com can download the complete tree of the web-site so you can ... browse it offline Mar 5, 2014 at 13:11

16 Answers 16

401
+100

HTTRACK works like a champ for copying the contents of an entire site. This tool can even grab the pieces needed to make a website with active code content work offline. I am amazed at the stuff it can replicate offline.

This program will do all you require of it.

Happy hunting!

18
  • 8
    Been using this for years - highly recommended. Aug 9, 2009 at 20:38
  • 4
    Would this copy the actual ASP code that runs on the server though?
    – Taptronic
    Mar 19, 2010 at 13:02
  • 10
    @Optimal Solutions: No, that's not possible. You'd need access to the servers or the source code for that. Mar 31, 2010 at 7:08
  • 4
    After trying both httrack and wget for sites with authorization, I have to lean in favor of wget. Could not get httrack to work in those cases.
    – Leo
    May 18, 2012 at 11:55
  • 4
    For macOS, use brew install httrack and then run it with httrack. It has a great menu after that. Easy peezie, lemon squeezie! Nov 21, 2019 at 17:31
328

Wget is a classic command-line tool for this kind of task. It comes with most Unix/Linux systems, and you can get it for Windows too. On a Mac, Homebrew is the easiest way to install it (brew install wget).

You'd do something like:

wget -r --no-parent http://site.com/songs/

For more details, see Wget Manual and its examples, or e.g. these:

14
  • 16
    There's no better answer than this - wget can do anything :3
    – Phoshi
    Sep 16, 2009 at 22:30
  • 9
    +1 for including the --no-parent. definitely use --mirror instead of -r. and you might want to include -L/--relative to not follow links to other servers. Oct 9, 2009 at 12:43
  • 7
    @optimal, the HTML output of course - it would get the code only if the server was badly misconfigured
    – Jonik
    Mar 19, 2010 at 15:17
  • 4
    unfortunately it does not work for me - there is a problem with links to css files, they are not changed to relative i.e., you can see something like this in files: <link rel="stylesheet" type="text/css" href="/static/css/reset.css" media="screen" /> which does not work locally well, unless there is a waz to trick firefox to think that certain dir is a root.
    – gorn
    Jul 27, 2012 at 0:42
  • 6
    doesn't work with the links, images, and others, so it is useless. The other answer with command wget -m -p -E -k www.example.com did all the jobs and display a website locally with proper links, images, format, etc, in so easy way.
    – BMW
    Jan 29, 2020 at 6:27
204

Use wget:

wget -m -p -E -k www.example.com

The options explained:

-m, --mirror            Turns on recursion and time-stamping, sets infinite 
                          recursion depth, and keeps FTP directory listings.
-p, --page-requisites   Get all images, etc. needed to display HTML page.
-E, --adjust-extension  Save HTML/CSS files with .html/.css extensions.
-k, --convert-links     Make links in downloaded HTML point to local files.
-np, --no-parent        Don't ascend to the parent directory when retrieving 
                        recursively. This guarantees that only the files below 
                        a certain hierarchy will be downloaded. Requires a slash 
                        at the end of the directory, e.g. example.com/foo/.
19
  • 11
    +1 for providing the explanations for the suggested options. (Although I don't think --mirror is very self-explanatory. Here's from the man page: "This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing") Sep 23, 2009 at 11:04
  • 2
    If you don’t want to download everything into a folder with the name of the domain you want to mirror, create your own folder and use the -nH option (which skips the host part). Jan 3, 2012 at 15:33
  • 4
    What about if the Auth is required?
    – Val
    May 13, 2013 at 16:04
  • 5
    I tried using your wget --mirror -p --html-extension --convert-links www.example.com and it just downloaded the index. I think you need the -r to download the entire site. Jul 14, 2014 at 10:49
  • 6
    for those concerned about killing a site due to traffic / too many requests, use the -w seconds (to wait a number of secconds between the requests, or the --limit-rate=amount, to specify the maximum bandwidth to use while downloading Jul 14, 2014 at 18:33
8

You should take a look at ScrapBook, a Firefox extension. It has an in-depth capture mode.

enter image description here

2
  • 7
    No longer compatible with Firefox after version 57 (Quantum).
    – Yay295
    Apr 16, 2018 at 22:31
  • seems it is no longer available. Oct 6, 2020 at 1:24
7

Internet Download Manager has a Site Grabber utility with a lot of options - which lets you completely download any website you want, the way you want it.

  1. You can set the limit on the size of the pages/files to download

  2. You can set the number of branch sites to visit

  3. You can change the way scripts/popups/duplicates behave

  4. You can specify a domain, only under that domain all the pages/files meeting the required settings will be downloaded

  5. The links can be converted to offline links for browsing

  6. You have templates which let you choose the above settings for you

enter image description here

The software is not free however - see if it suits your needs, use the evaluation version.

6

I like Offline Explorer.
It's a shareware, but it's very good and easy to use.

1
  • Very good and really easy to use windows software, in shareware mode it is able to download up to 2000 files which is enough for small websites. Oct 6, 2020 at 1:23
3

Teleport Pro is another free solution that will copy down any and all files from whatever your target is (also has a paid version which will allow you to pull more pages of content).

2

Try BackStreet Browser.

It is a free, powerful offline browser. A high-speed, multi-threading website download and viewing program. By making multiple simultaneous server requests, BackStreet Browser can quickly download entire website or part of a site including HTML, graphics, Java Applets, sound and other user definable files, and saves all the files in your hard drive, either in their native format, or as a compressed ZIP file and view offline.

enter image description here

2

For Linux and OS X: I wrote grab-site for archiving entire websites to WARC files. These WARC files can be browsed or extracted. grab-site lets you control which URLs to skip using regular expressions, and these can be changed when the crawl is running. It also comes with an extensive set of defaults for ignoring junk URLs.

There is a web dashboard for monitoring crawls, as well as additional options for skipping video content or responses over a certain size.

2

Power wget

While wget was already mentioned this resource and command line was so seamless I thought it deserved mention: wget -P /path/to/destination/directory/ -mpck --user-agent="" -e robots=off --wait 1 -E https://www.example.com/

See this code explained on explainshell

1

You can use below free online tools which will make a zip file of all contents included in that url

1

Cyotek WebCopy seems to be also a good alternative. For my situation, trying to download a DokuWiki site, it currently seems to lack support for CSRF/SecurityToken. Thats why I actually went for Offline Explorer as stated already in answer above.

1

In my case, I wanted to download not an entire website, but just a subdomain, including all its subdomains.

As an example, I tried :

wget -E -k -m -np -p https://www.mikedane.com/web-development/html/index.html

which worked just fine.

From my experience, this doesn't always get all the subdomains or PDF:s, but I did get a fully functional copy that works fine offline.

Here are the meanings of the flags I used, according to the Linux man page :

-E   – will cause the suffix .html to be appended to the local filename
-k   – converts the links to make them suitable for local viewing
-m   – turns on recursion and time-stamping, infinite recursion depth
-np – only the files below a certain hierarchy will be downloaded
-p   – download all files necessary to properly display the pages

Reference

0

A1 Website Download for Windows and Mac is yet another option. The tool has existed for nearly 15 years and has been continuously updated. It features separate crawl and download filtering options with each supporting pattern matching for "limit to" and "exclude".

1
  • This one works fine for me. It works even with sites that requires log in. Sep 28 at 11:01
-1

The venerable FreeDownloadManager.org has this feature too.

Free Download Manager has it in two forms in two forms: Site Explorer and Site Spider:

Site Explorer
Site Explorer lets you view the folders structure of a web site and easily download necessary files or folders.
HTML Spider
You can download whole web pages or even whole web sites with HTML Spider. The tool can be adjusted to download files with specified extensions only.

I find Site Explorer is useful to see which folders to include/exclude before you attempt attempt to download the whole site - especially when there is an entire forum hiding in the site that you don't want to download for example.

-5

I believe google chrome can do this on desktop devices, just go to the browser menu and click save webpage.

Also note that services like pocket may not actually save the website, and are thus susceptible to link rot.

Lastly note that copying the contents of a website may infringe on copyright, if it applies.

2
  • 4
    A web page in your browser is just one out of many of a web site.
    – Arjan
    May 16, 2015 at 20:05
  • @Arjan I guess that makes my option labor intensive. I believe it is more common for people to just want to save one page, so this answer may be better for those people who come here for that.
    – jiggunjer
    May 17, 2015 at 10:10

Not the answer you're looking for? Browse other questions tagged or ask your own question.