针对高效网络爬虫的语言建议

时间:2010-12-03 18:56:08

标签: javascript asynchronous node.js web-crawler

我正在寻找一种用于编写高效网络爬虫的语言。我重视的事情:

  • 富有表现力的语言(不要让我只是通过静态打字箍)
  • 有用的库(基于css选择器的html解析器会很好)
  • 最小内存占用
  • 可靠的语言运行时&库

我试过node.js.我理论上喜欢节点。 Javascript很有表现力。您可以使用jQuery来解析html。 Node的异步性质允许我并行处理许多url而不处理线程。 V8非常适合解析。

在实践中,节点不适合我。我的过程不断崩溃。总线错误,事件管理器中的异常......等等。

我已经做了很多Ruby开发,所以我不介意使用Ruby 1.9的协程(光纤?),只要我不会遇到类似的VM /库稳定性问题。

其他建议?

4 个答案:

答案 0 :(得分:6)

使用Node.js,修复崩溃的内容。几个月来它一直在我的Ubuntu盒子上运行没有任何问题。

对于库,我建议使用YUI3代替jQuery,它可以让你轻松地在几分钟内构建一个webcrawler / scraper,如果你不相信我从YUIConf2010观看this Talk,那就是40分钟但这都是关于代码的。

戴维·格拉斯很好地展示了它是多么容易以及你需要多少代码,是的,在谈话中有不同版本的jsdom存在一些问题,但这个谈话是在11月初提出的,所以很多应该已经修好了。

您可以在GitHub page查看演讲中的所有内容 这是他的scraper获得Digg当前的新闻标题。

说真的,让Node.js在你的系统上运行是值得的,因为最终你在服务器端获得了YUI3的所有功能。

答案 1 :(得分:0)

我很确定任何语言都有可以处理的东西。你确定node.js因代码中的问题而没有崩溃吗?如果你对它感到满意,为什么不使用Ruby呢?

还有BeautifulSoup(Python),如果你的主要障碍是HTML解析,你可以考虑。

答案 2 :(得分:0)

使用您最熟悉的语言或您最想学的语言。您可以使用任何语言编写Web爬网程序。

我个人用Java,Ruby和Perl开发了爬虫。所有这些语言都符合您的要求。 (是的,即使Java中的爬虫也有合理的内存占用。)其中,Java是我最喜欢的,因为它拥有最成熟的HTTP和HTML库。如果我发现自己在写另一个,我想接下来尝试Python。

您将面临的第一个算法问题是有效识别您已访问过的网页的任务。此URL索引可能会变得非常大,并且必须支持快速查找和插入。常见的数据库索引可以在早期的爬虫原型中使用,但很快就会成为瓶颈。

答案 3 :(得分:0)

python和BeautifulSoup,易学易用。