先讲讲做这个小程序的动机吧,昨天看了下以前学院的新闻,没什么更新,但发现列表很长,保留了2003年1月至今的所有新闻。这个新闻列表是大学期间我们了解学院信息的主要来源,都养成了每天先看新闻再看BBS的习惯。在大连实习期间更是如此,也算是产生感情了^__^,所以。。。决定把这700+新闻全部保存下来...需求:指定一个网址,将这个网页和里面所有的子链接页面都下载下来,保存到指定的文件夹中。如下图所示:需求有了,怎么完成呢?用迅雷下载全部链接?嗯,这是个好主意,(我确实也这么做了一次,连接数开得太多了,差点被封orz ),但咱们是搞软件的@_@,这个小功能是不是写个程序就能搞定,用Java?想到那一堆Stream的封装(new BufferedReader(new BufferedOutputStream(new FileOutputStream(new File("blabla.html")))))...我就头晕。小程序用脚本语言?应该不错!用Perl还是Python?。。。经过一番网上查询论证,似乎:Perl语法复杂,但简练,API库也超级多;Python语法清晰易懂,有点像Java,适合开发大型应用。Java是我的最爱,也算熟悉了,就学点bt的吧,用Perl完成代码期间主要参考了Perl文档中URL,HTML::LinkExtor,HTTP::Request的用法,Perl中国的一篇文章《LWP与WEB的基本使用》,还占用了J2EE的上课时间来编写程序。。。
主网页保存为index.html,子网页按1、2、3排序生成1.html、2.html等因为有Google Desktop,即使文件名是1.html...,搜索起来也是很方便的。也可以扩充下,将<a></a>中的新闻主题抽出来作为文件名。但这个程序对我来说已经足够了,所以就不继续做了。总的来说用Perl还是很简单的,库也很多,写起来挺方便!但是要记得常翻翻Perl手册,呵呵Technorati Tag : Perl LWP Download web script