2016-03-27 17 views
1

nodejsのファントムクローラーをダウンロードしてインストールしました。私は、ファイルと呼ばれるcrawler.jsに次のスクリプトをコピーして貼り付け:phantom-crawlerを使ってhtmlソースをコンソールに出力する方法

var Crawler = require('phantom-crawler'); 

// Can be initialized with optional options object 
var crawler = new Crawler(); 
// queue is an array of URLs to be crawled 
crawler.queue.push('https://google.com/'); 
// Can also do `crawler.fetch(url)` instead of pushing it and crawling it 
// Extract plainText out of each phantomjs page 
Promise.all(crawler.crawl()) 
.then(function(pages) { 
    var texts = []; 
    for (var i = 0; i < pages.length; i++) { 
    var page = pages[i]; 
    // suffix Promise to return promises instead of callbacks 
    var text = page.getPromise('plainText'); 
    texts.push(text); 
    text.then(function(p) { 
     return function() { 
     // Pages are like tabs, they should be closed 
     p.close() 
     } 
    }(page)); 
    } 
    return Promise.all(texts); 
}) 
.then(function(texts) { 
    // texts = array of plaintext from the website bodies 
    // also supports ajax requests 
    console.log(texts); 
}) 
.then(function() { 
    // kill that phantomjs bridge 
    crawler.phantom.then(function (p) { 
    p.exit(); 
    }); 
}) 

私はコンソールに(Googleのページから、この場合は)完全なHTMLソースを印刷したいと思います。

私は多くを検索しましたが、類似したものは見つかりませんでした。どうすればいいですか?

答えて

1

plainTextの代わりにcontentを入手してください。

モジュールphantom-crawlerは、モジュールnode-phantom-simplephantomjsを使用)を使用します。

あなたが電話できるプロパティのリストは、phantomjs wikiにあります。

var Crawler = require('phantom-crawler'); 

// Can be initialized with optional options object 
var crawler = new Crawler(); 
// queue is an array of URLs to be crawled 
crawler.queue.push('https://google.com/'); 
// Can also do `crawler.fetch(url)` instead of pushing it and crawling it 
// Extract plainText out of each phantomjs page 
Promise.all(crawler.crawl()) 
.then(function(pages) { 
    var allHtml = []; 
    for (var i = 0; i < pages.length; i++) { 
    var page = pages[i]; 
    // suffix Promise to return promises instead of callbacks 
    var html = page.getPromise('content'); 
    allHtml.push(html); 
    html.then(function(p) { 
     return function() { 
     // Pages are like tabs, they should be closed 
     p.close() 
     } 
    }(page)); 
    } 
    return Promise.all(allHtml); 
}) 
.then(function(allHtml) { 
    // allHtml = array of plaintext from the website bodies 
    // also supports ajax requests 
    console.log(allHtml); 
}) 
.then(function() { 
    // kill that phantomjs bridge 
    crawler.phantom.then(function (p) { 
    p.exit(); 
    }); 
}) 
+0

詳細な回答ありがとうございます。これは非常に役に立ちます。 –

+0

あなたは歓迎ですが、あなたは私がソースコードをチェックしたことを知っています;)! – MasterT

+0

私はノードjsの技術では新しいです、私はすべてのものが一緒に働く方法を理解するために試してみます、私はソースコードをチェックしたと信じていますが、私はコーヒースクリプトを理解していません。 –

関連する問題