2011-04-05 70 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