« google版本的互联网论坛 | Main | zola去重庆找那个钉子户了!(转) »

libwww,libcurl以及其他

作者:virushuo 发表于 2007-03-11 21:03 最后更新于 2007-03-11 22:03
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明


最近我需要写点页面分析的东西,这些东西某些程度上类似搜索引擎的“爬虫->parser->存储”的过程。

过去我常用的抓取页面的库是libcurl,这个东西是unix常用命令curl的基础,curl被称做“命令行浏览器”,功能强大,支持的协议也全面。遗憾的是libcurl仅仅是个支持多协议的抓取库,不能做解析。

找来找去,发现了w3c的Libwww库,这东西功能强大的吓人,不仅有解析,还有robot(也就是爬虫了,或是叫internet walker)功能。在Libwww基础上完成的程序很多,最著名的大概是字符模式的浏览器lynx。我几乎就觉得这就我需要的东西了,立刻dive into。

一整天之后,我终于能用这东西抓下来页面,并且从html页面中分析出来一些信息了,但是想更进一步就变的异常困难。因为这个库功能太复杂了。这东西文档不详细,被人提及的也少。Libwww最近的Release 5.3.2,发布于2000年12月20日。一个有这么多年历史的东西,竟然没多少开发者在讨论,非常不正常。

找来找去,最后在libcurl的FAQ里面看到了和Libwww的比较,精选的读者来信告诉我,不仅仅是我一个人被Libwww的复杂弄的晕了头脑,我才花了一整天,写信的那个哥们竟然用了一人月,还是在里面打转,直到换了curl才好。虽然这是libcurl推销自己的方法,不过这些失败的前辈的经验让我对自己的智商重新有了信心。看来这东西没多少人讨论是正常的...

好吧,我也投降,libcurl没html解析功能,这没关系,我找别的办法好了...这么复杂的库,再好我也实在没办法忍受下去了,再说我需要的功能其实也真没Libwww那么复杂的。

写程序其实很容易迷失,你会看到一个似乎很完美,什么都能做的东西,一下子就喜欢上它,但是最后往往还是无福消受。往往是那些,不那么成熟,多少有点小毛病的库,组合在一起才是真正的解决方案。

Tags:
以下文章供您参考:

从SOA说开去 - Mar 10, 2008

德国式的幽默 - Mar 06, 2008

说总是比做容易 - Mar 03, 2008

TrackBack

TrackBack URL for this entry:
http://www.devep.net/cgi-bin/mt/devtb.pl/556

Comments

啊,走错了……

curl用起来够快速,而且支持也不错。算是html解析标配了。

如果可以选择Perl的话,可以使用HTML解析相关的模块,我就使用过HTML::TableExtract提取网页上的表格。最基本的模块是HTML::Parser,当然最好用一些高层的,WWW::Mechanize也很不错的。

Perl的模块可以在http://search.cpan.org/上找到。

我的选择基本是:C>python>java。虽然这个blog是perl...但是我实在还是不想用perl写其他的东西了。哈哈。

libcurl 这一套东西有点象瑞士军刀

居家旅行用挺好 :)

用curl抓取,然后用tidy解析。


拜托能不能弄个稍微远景一些的照片,感觉视线被紧盯着难受

Python+BeautifulSoup,超赞!

越来越技术了。。。:)

脚本语言做这个正好是内行。ruby或python都是好选择。

佩服你用c来做。用java来做的人也是很有勇气的。*_~

Post a comment


about me:
me.jpg
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2