我正在寻找一种用于编写高效网络爬虫的语言。我重视的事情:
我试过node.js.我理论上喜欢节点。 Javascript很有表现力。您可以使用jQuery来解析html。 Node的异步性质允许我并行处理许多url而不处理线程。 V8非常适合解析。
在实践中,节点不适合我。我的过程不断崩溃。总线错误,事件管理器中的异常......等等。
我已经做了很多Ruby开发,所以我不介意使用Ruby 1.9的协程(光纤?),只要我不会遇到类似的VM /库稳定性问题。
其他建议?
答案 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,易学易用。