I'm going to assume you have complete access (but some of these techniques don't require it, and I'll give alternatives in case you don't have access).
Download the site via FTP (or use a wget
script--command line) and you'll get a pretty good idea of structure. If it is a dynamic site (e.g. using PHP and a database) make sure to manually review at least one page of each type (each template) and look for things which require human discretion: styling, aesthetics, wording, weirdness at different (common) screensizes, if responsive.
Once you have a local copy it's very easy to search through all the files (or the database) so that if you want to know how many times the word 'foobar' occurs on the site you can use the command line with something like grep
or something as simple as the find option in Sublime Text 2.
Use the 'audits' tab in Chrome developer tools (I'd also use PageSpeed or YSlow) on the live site (again if it is a dynamic site one instance of each 'template' should be representative).
Validate the code; the W3C has a new validator that looks at an entire site for a wide range of issues. A broken link checker (W3C has one also) might be good too.
Next, I'd look through webmaster tools and analytics. A post (an entire blog actually) that I think you'll find useful is Avinash Kaushik's Intro to Web Analytics. Step 6, which uses a keyword cloud, immediately came to mind and can be used without access to analytics.
Obviously, these steps won't replace a manual review but they will give you a really good idea where to look.
Oh, and one more little known trick, go to Google and search site:example.com, this gives you a fast way to see all the pages in Google's index.
Update: I recently started a new job (SEO) and we use the Screaming Frog SEO spider tool. You get more features if you buy a license but you get most of the functionality in the free version (and at least then you can try it out). It really helps with speed up audits of large sites.