ccidnet????

出版日期:1998-11-16 总期号:777 本年期号:87

本期导读
综合消息
硬件
软件
电脑工作室
拉网小调
teleport散手集
张猛

  谈起离线浏览器,最负盛名的就是teleport、go!zilla、webzip,最流行的是teleport。笔者用它拉了许多网页,又与teleport小组e-mail往来,笔者有了许多“奇拳怪招”,选择一些自以为心得之处,请同好指正。


  ·一、致命缺陷的解决·


  teleport有一个致命的缺陷:不支持断点续传。这个毛病非常严重:很多连接都是不稳定的,速度也不高,不可避免地会失去连接或中断下载。如果每次都重新下载,必将浪费大量时间。拉一些小的网页看不出这个缺陷,但笔者经常是拉那些有大量文件的网页:临睡前让teleport开始工作,一夜起来,但见网络流量达到1xx mb,但teleport只拉下一两个文件,甚至一个文件都没有拉下来。研究之后发现病根就在不支持断点续传,一个大文件拉到一半失去连接,接着重拉,又断又拉,结果总是拉不完。另外,teleport拉下的文件往往不能使用,这与它的校验不足也有关。同teleport开发小组接触后,他们也承认teleport不支持断点续传。既要把网站的整个结构拉下来,又要保证文件拉得快、拉得好,笔者总结出两招散手:

  1.结合getright

  getright是非常著名的断点续传软件,而且实用中发现,它争夺带宽的能力非常强,它工作时,teleport基本抢不到带宽。不过,getright不能复制网站的结构,这正是teleport的特长。笔者开始把teleport拉不下来或拉得不对的文件的url传递给getright,把文件拉下后再拷贝到拉下的网页的对应位置中。但发现这样做重复劳动太多,而且对于未拉下来的文件,即使用getright拉下来拷贝到网页中,teleport下次照拉不误,反而把好的文件覆盖了。

  后来,找到teleport的项目属性(projects properties)的file retrieval 的retrieval modes的第四项是只取文件名,查看帮助得知这项设置使teleport把网页所链接的文件名拉下来,并不拉实际的文件,作者把它比喻成制作地图。只拉文件名不拉文件当然要快得多啦!而且这样拉下的文件,teleport会认为它已经拉下,下次下载网页时不会重新拉它。用teleport拉url,再把url传递给getright,用getright无与伦比的断点续传能力实际拉文件,真是天生绝配。这种方法特别适合于拉那些结构不复杂,大量文件位于同一目录中的网页,笔者用这种方法成功地将世界最大的bbs支持站点pcmicro的全部近1gb文件拉了下来。

  2.减少线程数

  带宽是有限的,线程一多,每个线程分配的资源,包括带宽、cpu时间就会减少。笔者在拉“黄金书屋”时,发现下载速度很高,平均在3.x kb/s,但对一些大文件仍然在拉到9x%时失去连接重拉,这说明即使连接速度高、稳定,对于大文件也不免要失去连接。笔者灵机一动,如果把高速的带宽全给一个线程,那么文件下载的时间就会大大缩短,失连接的机会不就降低了吧,结果果然如我所料。但这种方法只适用于连接稳定高速的情况下,对于一些本身速度就很低的网站,减少线程也不会增单个线程的带宽,反而使总的带宽降低,徒然浪费时间。teleport最多支持同时开10个线程,线程数目的设置是在项目属性(projects properties)的exploration设置中。


  ·二、起始地址的设置·


  在起始地址设置的“范围与边界”(exploration depth and boundaries)中有四项设置,如果只想拉指定地址以下的内容,就选第一项;如果想拉同一域下的内容,就选第二项;第三项的含义是指不限边界,轻易不要选它,否则会把所有链接、链接的链接都会拉了下来,结果拉了一堆垃圾。

  第四项的设置是很有味道的,因为很多主页上的内容都是链接,如著名的“全景中文图书”中大部分内容都是外部链接,如果将范围限定在第一、二项,就会有许多东西拉不下来,选第三项又会拉下许多垃圾,这时就体现出第四项的威力了,它允许teleport去拉外部链接的内容,但在外部链接中的游历达到指定层数后就返回url中指定的域。

  像“全景中文图书”这样的网页,上面链接的文件一般都是直接链接,所以对这样的站点,只要在第四项中将游历外部链接的层次设置为2或3,就会把链接的文件取下来。


  ·三、多个起始地址·


  笔者很爱看《南方都市报》,但这份报纸电子版每期的url都不同,无法在项目中只加一个地址而一劳永逸,因此需要不断地填加新地址,可以在projects选单的new starting address 中加入新的地址。


  ·四、保持项目苗条·


  teleport还有一个缺陷,就是当内含的url增多时,项目的启动及更新时间会大大降低,在笔者pⅡ 266的机器上,启动一个有1万个url的项目大约要用半分钟,所以时不时地对项目进行减肥,删除无用的url是很有必要的。

  以笔者下载的《南方周末》为例,笔者把每期内容都压缩保存起来,在项目中就没有再保存该期信息的必要,此时就可以把该期的起始地址删除。

  但切记一点,teleport在删除url时,会把与该url相关联的文件及目录全部删除掉,所以如果只是想给项目减肥,文件还想保留,那么在删除url前一定要把文件转移到其他位置。


  ·五、如何拉更新频繁的站点·


  很多站点更新频繁,但是文件也非常众多。teleport在项目设置中可以设置文件更新的模式。如果把更新模式设置成所有文件都更新,自然会保证下载的站点与网上站点一致,但太浪费时间。

  一般来说,主页的更新最频繁的是html文件,而链接的图片、文档都不会更变,所以在设置中将更新设置为只更新html文件,就会大大减少文件更新的时间。这种方法适用于html文件主要是索引,其它文件不是html文件的站点。

  又有一种情况,就是像“黄金书屋”这样的站点,绝大多数文件是html文件,如果更新全部html文件,仍会浪费大量时间。但这类站点往往有“最新更新”这一页,只要更新这一页,就会把站点上更新的文件都取下来,而已经拉下的文件就不用更新了。我的方法就是把这一页设置为项目的另一个起始地址,那么就可以在项目中方便地找到这个文件并进行更新了。

  除此之外,还可以将确定不会更新的url禁止掉(disable),只有那些确认会更新的url设置为enable,那么更新项目时那些disable掉的url就不会更新了。

  好了,不少珍贵的站点总是寿命不长,香港的“黄金书屋”,paul gao的leoworld crack mirror都很快关闭,大家如果发现好玩难得的站点,心动不如手动,把它下来就是了。