试图让 jsdom(node.js 模块)在 Windows 上工作。一直抱怨没有为我的节点版本构建。
将节点(相同版本,0.5.9,来自源代码)安装在 linux 机器上并对其进行节点处理。然后我将它复制到Windows机器(在node_modules下)
还是不行...
有任何想法吗?或从节点发出的请求的响应中获得的解析 HTML 的其他建议?
通过 jsdom 使用 jquery 会很不错。
干杯。
我很遗憾地说 jsdom (>=0.2.3) 目前需要一个 c++ 插件,它不能很好地与 Windows 配合使用。我认为你最好的选择是尝试安装 jsdom@0.2.1 并解决在 jsdom 的窗口上下文中执行 javascript 引起的内存泄漏。
解决方法包括:
document.body.innerHTML = '..new markup..';
目的是远离 c++ 插件,但不幸的是,目前不可能。
如果 node.js 不是绝对必须的,请查看我们的 SO-ist @nrabinowitz的 pjscrape。它已经过测试和证明。
此外,node-scraper似乎是适合您工作的工具,有 222 个观察者和 11 个分叉,它似乎也很活跃。可以在自述文件或SO 上的此处找到用例。
我一直在玩 node.js 模块Cheerio,与 jsdom 相比,它是:
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());
});
});
我不确定你到底想要做什么,但node.io 有一个可能符合要求的抓取框架。