使用node.js来刮去Windows上的网站

试图让jsdom(node.js模块)在Windows上工作。 不停地抱怨没有为我的节点版本构build。

在Linux机器上安装了节点(源代码为0.5.9,节点)。 然后我把它复制到Windows机器(在node_modules下)

仍然没有去…

有任何想法吗? 或其他parsingHTML的build议我从我从节点做的请求的回应?

通过jsdom使用jquery会很好。

干杯。

如果node.js不是绝对必须的,请查看我们的SO-ist @ nrabinowitz的pjscrape。 它被testing和certificate。

此外, 节点刮板似乎是你的工作的正确工具,222观察者和11叉,它似乎也相当活跃。 用例可以在自述文件中find,也可以在SO上find 。

我很抱歉地说,jsdom(> = 0.2.3)目前需要一个c + +的插件,不能很好地与Windows。 我认为你最好的办法是尝试安装jsdom@0.2.1,并解决在jsdom的窗口中执行javascript所导致的内存泄漏问题。

解决方法包括:

  • 每个生产一个新的进程
  • 重用一个窗口,并通过document.body.innerHTML = '..new markup..';replaceDOM document.body.innerHTML = '..new markup..';

目的是从c + +插件离开,但不幸的是,这是不可能的。

我不确定你想要做什么,但是node.io有一个可能适合这个账单的抓取框架 。

我刚刚玩了node.js模块Cheerio ,并与jsdom比较,它是:

  • 快多了
  • 更容易安装
  • 对破碎的HTML更有弹性(与jsdom相比)
  • 并提供了大部分将使用服务器端的jQuery函数

http://matthewmueller.github.com/cheerio/


刮削示例:

 var request = require('request'), cheerio = require('cheerio'); request('http://encosia.com', function(error, response, body) { // Hand the HTML response off to Cheerio and assign that to // a local $ variable to provide familiar jQuery syntax. var $ = cheerio.load(body); // Exactly the same code that we used in the browser before: $('h2').each(function() { console.log($(this).text()); }); });