Skip to content

dachev/nQuery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-sizzle

A node.js plugin that brings sizzle and libxmljs together. Currently it passes all relevant sizzle tests when used with an HTML document.

Requirements

  • Node v0.1.102+
  • libxmljs v0.4.0+

How to install

npm install node-sizzle

How to test

To run the tests, go to the project's root directory and run node test.js

Demo

To run the tests, go to the examples directory and run node web.js

How to use

var http     = require('http'),
    events   = require('events'),
    inherits = require('sys').inherits,
    dominiq  = require('node-sizzle/dominiq'),
    sizzFact = require('node-sizzle');

function WebClient(host, path) {
    var self       = this,
        transport  = http.createClient(80, host),
        request    = transport.request('GET', path, {'host': host});
        
    request.end();
    
    request.on('response', function (response) {
        if (response.statusCode != 200) {
            self.emit('done', response.statusCode, '');
        }
        else {
            var html = '';
        
            response.setEncoding('utf8');
            response.on('data', function (chunk) {
                html += chunk;
            });
            response.on('end', function (chunk) {
                self.emit('done', 200, html);
            });
        }
    });
}
inherits(WebClient, events.EventEmitter);

var client = new WebClient('www.yahoo.com', '/');
client.on('done', function(status, html) {
    if (status != 200) {
        throw 'unable to download page';
    }

    var doc      = dominiq.createHTMLDocument(html),
        window   = {document:doc},
        sizzle   = sizzFact.sizzleInit(window),
        divs     = sizzle('div');

    for (var i = 0; i < divs.length; i++) {
        console.log(divs[i].toString());
    }
});

About

Sizzle powered CSS selectors for libxmljs

Resources

License

Stars

Watchers

Forks

Packages

No packages published