Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save and render a webpage with PhantomJS and node.js

I'm looking for an example of requesting a webpage, waiting for the JavaScript to render (JavaScript modifies the DOM), and then grabbing the HTML of the page.

This should be a simple example with an obvious use-case for PhantomJS. I can't find a decent example, the documentation seems to be all about command line use.

like image 851
Harry Avatar asked Apr 01 '12 18:04

Harry


1 Answers

From your comments, I'd guess you have 2 options

  1. Try to find a phantomjs node module - https://github.com/amir20/phantomjs-node
  2. Run phantomjs as a child process inside node - http://nodejs.org/api/child_process.html

Edit:

It seems the child process is suggested by phantomjs as a way of interacting with node, see faq - http://code.google.com/p/phantomjs/wiki/FAQ

Edit:

Example Phantomjs script for getting the pages HTML markup:

var page = require('webpage').create();   page.open('http://www.google.com', function (status) {     if (status !== 'success') {         console.log('Unable to access network');     } else {         var p = page.evaluate(function () {             return document.getElementsByTagName('html')[0].innerHTML         });         console.log(p);     }     phantom.exit(); }); 
like image 197
Declan Cook Avatar answered Oct 06 '22 01:10

Declan Cook