var cheerio = require("cheerio"), fs = require("fs"); fs.readFile('bookmarks.html', "utf-8", function read(err, data) { if (err) { throw err; } var $ = cheerio.load(data); $("a").each(function(index, a) { var $a = $(a); var title = $a.text(); var url = $a.attr("href"); var categories = getCategories($a); console.log(title, url, categories); }); }); function getCategories($a) { var $node = $a.closest("DL").prev(); var title = $node.text() if ($node.length > 0 && title.length > 0) { return [title].concat(getCategories($node)); } else { return []; } }