对于与网络数据挖掘相关的任务(开发网络爬虫、字符串操作等),我需要一些帮助来比较不同的编程语言,例如:C++、Java、Python、Ruby 和 PHP。我对 PHP 有一点经验,我认为它对于这个特定任务的优点是语法简单、深入的字符串解析能力、网络功能和可移植性,但对其他语言及其优缺点了解不多与此特定任务相关。
3 回答
特定的语言与您的熟悉程度无关紧要。如今,所有高级语言都将附带基础知识。除非您需要它超快(您可能会受到下载速度的限制,而不是解析 HTML 的速度)或没有列出其他限制,否则语言不会那么重要。
只要确保您使用这些库。特别是一个 HTML 解析库,它在适当的情况下可以很好地处理无效标记(不是 XML 解析器)和正则表达式。
正如之前的帖子所暗示的那样 - 熟悉会产生很大的不同。我还要说看看这门语言最初的设计目的是什么——它很好地了解了它最擅长的地方。
PHP - 专为服务器端脚本而设计,并不适合这种用途。
Perl - 旨在将文本分开(良好的开始)和优秀的库 - 查看 LWP 和 HTML 下的模块,例如 HTML::Treebuilder - 一个不错的选择。无与伦比的插件模块选择。
Python——不错的选择,看看beautifulsoup和urllib
Ruby - 也是一个不错的选择,就可用模块而言,看 hpricot 远不如 Perl 或 Python 成熟。
我编写了很多网络蜘蛛/数据挖掘软件,并且一直使用 Perl。如果我今天从头开始,我可能会选择 python。
Google 的第一个爬虫是用 Python 1.5 编写的
我不是其他语言的专家,但我会使用 python 和 html5lib 或 Beautifulsoup。