【发布时间】:2013-02-25 23:41:25
【问题描述】:
我有一个来自https://github.com/sylvinus/node-crawler的超级简单示例代码
var Crawler = require("crawler").Crawler;
var c = new Crawler({
"maxConnections":10,
"callback":function(error,result,$) {
console.log(result.body);
}
});
c.queue("http://google.com");
输出是
<Buffer 3c 21 64 6f 63 74 79 70 65 20 68 74 6d 6c 3e 3c 68 74 6d 6c 20 69 74 65
6d 73 63 6f 70 65 3d 22 69 74 65 6d 73 63 6f 70 65 22 20 69 74 65 6d 74 79 70 65
...>
如果我将 Url 更改为 c.queue("http://bing.com"),我可以获得 html 文本。这种行为因网站而异,我不明白。
如果我将 console.log(result.body); 更改为 console.log($('body').text());,google.com 网站会给我一些奇怪的文字,看起来不像发送到我的浏览器的文字。
如果我将 URL 更改为其他网站,例如 Pinterest.com,我开始在 jsdom.js 本身中遇到错误。
C:\node_modules\crawler\node_modules\crawler\node_modules\jsdom\lib\jsdom.js:256
window.document.documentElement.appendChild(script);
^
TypeError: Cannot call method 'appendChild' of null
at exports.env.exports.jsdom.env.processHTML (C:\node_modules\crawler\node_m
odules\crawler\node_modules\jsdom\lib\jsdom.js:256:41)
at Array.forEach (native)
at exports.env.exports.jsdom.env.processHTML (C:\node_modules\crawler\node_m
odules\crawler\node_modules\jsdom\lib\jsdom.js:239:18)
at Object.exports.env.exports.jsdom.env (C:\node_modules\crawler\node_module
s\crawler\node_modules\jsdom\lib\jsdom.js:268:5)
at exports.Crawler.self.onContent.jsd (C:\node_modules\crawler\node_modules\
crawler\lib\crawler.js:243:37)
at exports.Crawler.self.onContent (C:\node_modules\crawler\node_modules\craw
ler\lib\crawler.js:278:29)
at fs.readFile (fs.js:176:14)
at Object.oncomplete (fs.js:297:15)
所以我猜这是代码本身的一些错误,但如果不是,有人可以帮忙指出我的错误吗?
注意: jQueryUrl 参数可能会添加到 new Crawler({}) 中,以使其与您的 jQuery 文件位置一起使用。
【问题讨论】:
标签: jquery node.js web-crawler jsdom