You could write a crawler in any language. Crawling is easy as you are listening for HTTP traffic and analyzing the HTML in the response.
To accurately get the content in dynamically executed pages you need to interact with the DOM. This is the reason Google updated its crawler to execute JavaScript.