0

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 テキストを取得できます。この動作は Web サイトによって異なり、私には理解できません。

に変更console.log(result.body);するとconsole.log($('body').text());、google.com サイトから、ブラウザに送信されたものとは異なる奇妙なテキストが返されました。

Url をPinterest.comなどの他の Web サイトに変更すると、 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)

これはコード自体のエラーだと思いますが、そうでない場合は、誰かが私の間違いを指摘するのを手伝ってくれますか?

注: jQuery ファイルの場所で動作するようにjQueryUrl、param が追加される場合があります。new Crawler({})

4

1 に答える 1

1

まだチェリオを見ていない場合は、チェックしてください。より一貫した結果が得られる可能性があります。しばらく前にクローラーに使用しましたが、あなたが説明したような問題はありませんでした。

すっきりとしたデザインに見えたので選びました。

于 2013-02-26T08:57:15.813 に答える