Erlang是网络浏览器的正确选择吗?

时间:2012-02-05 19:17:26

标签: erlang web-crawler

我打算为NLP项目编写一个webcrawler,每次在特定的时间间隔内读取论坛的线程结构,并用新内容解析每个线程。通过正则表达式,提取作者,新帖子的日期和内容。然后将结果存储在数据库中。

用于抓取工具的语言和平台必须符合以下条件:

  • 可在多个核心和cpus上轻松扩展
  • 适合高I / O负载
  • 快速正则表达式匹配
  • 易于维护/很少操作开销

经过一些研究后,我认为Erlang可能是一个合适的候选者,但我读到它并不是很好的字符串处理(以及正则表达式匹配)。我对维护因素也没有任何满足感。

Erlang对于上述场景是一项很好的技术吗?如果没有,那么什么是一个好的选择呢?

3 个答案:

答案 0 :(得分:8)

我也在评估erlang用作网络爬虫,到目前为止看起来还不错。

现有许多有用的模块:HTML parserHTTP clientXPathregexcache

other people对同一个用例感兴趣,因此您可以从中学习。

然而,如果这只是一个一个项目,我推荐Python / Ruby / Perl,因为它将更容易开始。

答案 1 :(得分:3)

如果你对erlang熟悉和熟悉,那么如果我是你,我会坚持下去,虽然我不熟悉erlang。有了这些,我会给你一些指示:

  1. 不要使用正则表达式来解析HTML,而是使用XPATH HTML虽然是结构化的,但仍然很难在野外解析regular expressions are fairly slow and unreliable for parsing HTML.
  2. 确定crawler architecture的内容以及re-visit policy的内容。
  3. 为您找到best selection policy并实施它。
  4. Web爬网程序是一个相当复杂的系统,您必须关注速度,性能,可伸缩性和并发性。一些最着名的抓取工具是用C++ and Java编写的,但我没有听说过任何用erlang编写的抓取工具。

答案 2 :(得分:3)

Erlang对此很好。它的正则表达式库(几乎所有)工作委托给PCRE,这应该足够快。但避免使用字符串并使用二进制文件!它们都使用更少的内存,并且转换为C字符串的速度更快。

相关问题