我正在寻找一种语言来编写一个高效的网络爬虫。我所看重的东西:
footprint
我试过node.js。理论上我喜欢节点。Javascript非常有表现力。您可以使用jQuery解析html。Node的异步特性允许我在不处理线程的情况下并行地爬行许多urls。V8对于解析来说是很好的和快速的。
实际上,node并不适合我。我的过程经常崩溃。总线错误事件管理器中的异常..。等。
我做了相当多的Ruby,所以我不介意使用Ruby1.9的coroutines (纤维?)只要我不会在VM /库稳定性方面遇到类似的问题。
其他建议?
发布于 2010-12-03 19:49:13
使用Node.js,并修复任何破坏它的东西。几个月来,它一直运行在我的Ubuntu盒子上,没有任何问题。
对于库来说,我建议使用YUI3而不是jQuery,它可以轻松地让您在几分钟内构建一个all爬虫/刮板器,如果您不相信我在YUIConf2010上看this Talk,则需要40分钟,但这都是关于代码的。
Dav在展示它是多么的简单和你所需要的代码是多么的少方面做了很好的工作,是的,在演讲中有一些与不同版本的jsdom有关的问题,但是演讲是在11月初进行的,所以很多应该已经解决了。
你可以在他的GitHub page上查看谈话中的所有内容。
下面是他的scraper,它可以从Digg获得最新的新闻标题。
说真的,让Node.js在您的系统上运行是非常值得的,因为最终您在服务器端得到了YUI3的所有惊人之处。
发布于 2010-12-03 20:09:09
学习你最熟悉的语言或你最想学的语言。你可以用任何语言写一个网络爬虫。
我个人已经用Java、Ruby和Perl开发了爬虫。所有这些语言都符合您的要求。(是的,即使是Java中的爬虫也有合理的内存占用。)其中,Java是我最喜欢的,因为它拥有最成熟的HTTP和HTML库。如果我发现自己在写另一篇文章,我想尝试下一个Python。
您将面临的第一个算法问题是高效地识别您已经访问过的页面。这个URL索引可以变得非常大,并且必须支持快速查找和插入。一个通用的数据库索引将在早期的爬虫原型中工作,但很快就会被证明是瓶颈。
发布于 2012-10-14 16:03:59
python和BeautifulSoup,简单易学,效率很高。
https://stackoverflow.com/questions/4348868
复制相似问题