Streaming interface to the PhantomJS headless browser
First off, install the
npm install phantomstream
Next, create a simple script named "myscript.js".
phantomstream = require"../phantomstream"// Open up a PhantomJS stream that listens for commands that look like// "TITLE <url>". Browse to the URL and write the title back via the stream.var conf = logger: consolevar ps = phantomstreamopenconf// This callback executes inside of PhantomJS, not node. To see the API// available to you in PhantomJS, check out their documentation://var page = require"webpage"create// Listen for the "TITLE <url>" commands via the streaming interface.nodestreamon"data"var matches = /TITLE\s*/execdataif matchesvar url = matches1// Got a TITLE command, use the PhantomJS page object to browse// to that page, get the document title, and write it back to the stream.console.info"opening" urlpageopenurlvar title = pageevaluatereturn documenttitleconsole.info"sending title =" titlenodestreamwritetitle// Send an TITLE command to our PhantomJS process and echo the response.pswrite"TITLE "pson"data"console.info"node received:" datatoStringprocessexit
Run your script with node.
...you should see output like this:
[phantom-stdout] opening http://www.google.com [phantom-stdout] sending title = Google node received: Google
Enjoy! For more ideas on what is possible inside the callback for
phantomstream.open(), read the
Don't forget try out some demos from the
examples/ directory :)
If you are looking for higher-level implementations that wrap the PhantomJS API, check these out: