如何使用Node.js最有效地parsing网页

我需要parsing一个简单的网页,并从html获取数据,如“src”,“data-attr”等。我怎样才能最有效地使用Node.js做到这一点? 如果有帮助,我使用Node.js 0.8.x.

PS这是我parsing的网站 。 我想获得当前曲目的列表,并制作我自己的html5应用程序,以便在移动设备上进行收听。

我做了很多。 如果您正在拼图的网站大量使用JavaScript,您将需要使用PhantomJS 。 请注意,PhantomJS不是Node.js. 这是一个完全不同的JavaScript运行时。 你可以通过phantomjs-node或者node-phantom进行整合,但是它们都有点儿怪异。 YMMV与那些。 避免与jsdom做任何事情。 这会让你头痛 – 这包括Zombie.js 。

你应该使用Cheerio和Request 。 这对于大多数网页来说已经足够了。

我写了一篇关于使用Cheerio的请求的博客文章: 使用Node.js进行快速和脏屏幕扫描但是,如果是JavaScript密集型,请使用PhantomJS和CasperJS一起使用。

希望这可以帮助。

使用请求和Cheerio的片段:

var request = require('request') , cheerio = require('cheerio'); var searchTerm = 'screen+scraping'; var url = 'http://www.bing.com/search?q=' + searchTerm; request(url, function(err, resp, body){ $ = cheerio.load(body); links = $('.sb_tlst h3 a'); //use your CSS selector here $(links).each(function(i, link){ console.log($(link).text() + ':\n ' + $(link).attr('href')); }); }); 

你可以试试PhantomJS 。 这里是使用它进行屏幕抓取的文档 。

我同意@JP理查森说,Cheerio是最好的拼凑非JS的网站。 对于JS重型网站,请使用Casper 。 它提供了幻影和承诺风格的API很好的抽象。 他们过去如何刮他们的文档: http : //docs.casperjs.org/en/latest/quickstart.html 。

如果你想去幻影,使用节点幻像。 如果你想看看,我有一个git中心资料库使用它们一起生成PDF文件从HTML。 但我不会去幻想,因为它比你通常想要的更多,而快乐更快。