我有一个来自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 文件位置一起使用。