2011-04-05 64 views
13

有沒有JavaScript的網頁爬蟲框架?有沒有任何Java腳本的網頁爬蟲框架

+0

你能更具體?你在尋找一個在JavaScript中實現的網絡爬蟲嗎?服務器端(Node.js)還是客戶端(在瀏覽器中)? – 2011-04-05 17:31:29

+4

是否有客戶端的webcrawler框架?這將如何工作? – Shakakai 2011-04-05 17:36:32

+0

我使用服務器端JavaScript編寫了三個API。您可以像使用'python'那樣從命令行運行'nodejs'。這是一個完全有效的問題。 – slezica 2013-03-13 00:06:50

回答

8

嘗試PhantomJS。不完全是一個爬蟲,但可以很容易地用於此目的。它具有內置的全功能WebKit引擎,並具有保存截圖等功能。可用作簡單的命令行JS解釋器。

1

服務器端?

嘗試節點履帶:https://github.com/joshfire/node-crawler

+0

我不會認爲這是一個爬蟲,因爲它不編譯後續的uri爬行。它基本上會下載給定URL的來源並在完成時觸發回調。消費者需要定義用於抓取該頁面中提供的鏈接的邏輯,這不是非常簡單的事情。 – 2012-06-19 18:56:11

10

有一個新的框架,只是釋放了Node.js的叫spider。它使用jQuery來抓取/索引網站的HTML頁面。 API和配置非常好,特別是如果你已經知道jQuery。

從測試套件,這裏的爬行紐約時報網站的例子:

var spider = require('../main'); 

spider() 
    .route('www.nytimes.com', '/pages/dining/index.html', function (window, $) { 
    $('a').spider(); 
    }) 
    .route('travel.nytimes.com', '*', function (window, $) { 
    $('a').spider(); 
    if (this.fromCache) return; 

    var article = { title: $('nyt_headline').text(), articleBody: '', photos: [] } 
    article.body = '' 
    $('div.articleBody').each(function() { 
     article.body += this.outerHTML; 
    }) 
    $('div#abColumn img').each(function() { 
     var p = $(this).attr('src'); 
     if (p.indexOf('ADS') === -1) { 
     article.photos.push(p); 
     } 
    }) 
    console.log(article); 
    }) 
    .route('dinersjournal.blogs.nytimes.com', '*', function (window, $) { 
    var article = {title: $('h1.entry-title').text()} 
    console.log($('div.entry-content').html()) 
    }) 
    .get('http://www.nytimes.com/pages/dining/index.html') 
    .log('info') 
    ; 
+0

花上一個上午讓蜘蛛工作,它不能在最新的0.6.6 node.js中運行。 – Kuroro 2012-01-01 04:43:11

+0

這是一個好的開始,但它似乎不處理元重定向或文檔庫覆蓋,因此無法抓取許多網站。但這是我見過的節點的最佳實現。並且支持cookie,它比其他開源爬蟲更好。 – 2012-06-19 19:13:59