2011-10-18 47 views
2

试图让jsdom(node.js模块)在windows上工作。 不停地抱怨没有为我的节点版本构建。使用node.js刮去Windows上的网站

在Linux机器上安装节点(来自源的相同版本,0.5.9),并且节点将其震荡。 然后我把它复制到Windows机器(下node_modules)

仍然没有去...

任何想法?或解析HTML的其他建议我从对节点请求的响应中获得?

通过jsdom使用jquery会很好。

干杯。

回答

0

我不确定你想要做什么,但node.io has a scraping framework可能符合法案。

+0

谢谢,我会检查了这一点为好。 – Shh

+0

不行。抱怨一个缺失的模块,甚至没有告诉我它是哪一个。 – Shh

+0

如果您使用Windows,您需要查看package.js文件并手动下载解决依赖关系所需的模块。或者你可以在Windows上尝试npm的实验版本,并执行npm install([检查自述文件](http://npmjs.org/doc/README.html))。 – hross

1

如果node.js不是绝对必须的,请查看我们的SO-ist @nrabinowitz同行pjscrape。它已经过测试和证明。

此外,node-scraper似乎是您的工作的正确工具,有222名观察员和11名叉子,它似乎也非常活跃。用例可以在readmeright here on SO中找到。

+0

谢谢,我会检查出来。 – Shh

+0

好的,我查过了。不行。节点刮板需要调解,相同的错误 – Shh

+0

我假设你已经安装了,对吧? – vzwick

1

我很抱歉地说,jsdom(> = 0.2.3)目前需要一个C++插件,它不能很好地与windows搭配使用。我认为你最好的选择是尝试安装[email protected],并解决在jsdom窗口中执行javascript所导致的内存泄漏问题。

变通方法包括:

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

方式替换DOM的意图是将来自C++附加远,但不幸的是,目前这不可能。

0

我刚刚玩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()); 
    }); 

});