找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 1433|回复: 1

[【原创】] “林黛玉离线浏览器”——世界上最好的离线浏览器!

[复制链接]
发表于 2008-9-27 17:58:14 | 显示全部楼层 |阅读模式
“林黛玉离线浏览器”——世界上最好的离线浏览器!


林黛玉离线浏览器——一款比Teleport Pro更优秀的离线浏览器

林黛玉软件工作室研发出一款新的离线浏览器——林黛玉离线浏览器,技术特点如下:

1.用功能强大的正则表达式配置下载
2.可嵌入DLL分析引擎
3.可嵌入lua,python等动态语言分析引擎,将来还会更多。

从而可以让用户自如的描述“我要从哪些网页的哪些区域中下载哪些链接”,描述方式极为灵活,彻底克服了国外优秀离线浏览软件Teleport Pro一直以来没有真正解决的问题。而且,林黛玉离线浏览器还设计了非常完善的多线程下载调度算法,可以用任意多的线程高速下载,并可以动态增减线程数量。可以分布在计算机集群中进行分布式下载,就象搜索引擎的数据采集前端。

本软件已经被多家网站收录,下载地址:
中国共享软件注册中心:http://www.softreg.com.cn/Detail ... -BA38-977C95DBC3A2/
华军软件园:http://bj.onlinedown.net/soft/73690.htm
中国下载站:http://www.downtool.com/Sort/softdown.asp?softid=83922


经过一番艰辛,开发出这样的一款软件来好高兴哦,请允许我自豪的夸一夸自己的软件吧:

“林黛玉离线浏览器”——世界上最好的离线浏览器!

林黛玉离线浏览器是通过文本来配置的,界面极为简单,但是功能却异常复杂强大,因为——“只有符号才能完全操纵计算机”!

我们下面先看一看用正则表达式如何来配置的下载描述文件。

林黛玉软件工作室的论坛是Discuz!论坛,这是一种国内非常流行的论坛,可以用下面的配置文本来下载。(复制到软件起始界面那个编辑框里,点开始,就可以了)
引用:

  name:discuz
  starturl:http://lindaiyu.net
  nthreads:3
  maxdepth:9
  maxsize:1000000

  begin

  url:http://lindaiyu.net
  all_contentk
  parse:href=\"([^\"]*)\"
  add:http://lindaiyu.net/forum.*
  do

  url:http://lindaiyu.net/forum.*
  all_contentk
  parse:href=\"([^\"]*)\"
  add:http://lindaiyu.net/forum.*
  add:http://lindaiyu.net/thread.*
  sub:http://lindaiyu.net/forumdisplay.*

  do

总之就是要描述“我要从哪些网页的哪些区域中下载哪些链接”,看出门道了吗?下面逐行分析。
引用:

  #以#号开头的行是注释
  name:林黛玉软件工作室论坛
  starturl:http://lindaiyu.net
  nthreads:3
  maxdepth:9
  maxsize:1000000
  #定义下载起始页,下载线程数,下载深度,最大文件尺寸

  begin
  #开始描述下载规则

  #{ 此行为注释:规则1
  url:http://lindaiyu.net
  #对这样的页面(这里没有通配符,是单个的了)
  all_contentk
  #选全部内容(还可以用between,area来选指定范围内的内容,后面讲)
  parse:href=\"([^\"]*)\"
  #寻找文中所有符合这个正则表达式的字符串,并各自取出()中指定的部分,
  add:http://lindaiyu.net/forum.*
  #选择这样的链接
  do
  #提交
  #}


  #{ 规则2:
  url:http://lindaiyu.net/forum.*
  all_contentk
  parse:href=\"([^\"]*)\"
  add:http://lindaiyu.net/forum.*
  add:http://lindaiyu.net/thread.*
  #选择这样的链接
  sub:http://lindaiyu.net/forumdisplay.*
  #排除象这样的页面。
  do
  #}

这里简单的说一下正则表达式,
. 任意字符
* 字符出现任意次,包括0次
? 字符出现0或1次
+ 字符出现至少一次
[abcd] []是其中任一字符出现
    [a-z] [abcd....xyz]的简写形式
    [0-9] [0123456789]的简写形式
    [^abcd] 非abcd字符
\\ 转义字符 \\.就是. \\*就是* ,因为.*都有特殊意义,那么要表达它们自身时就要转义一下,还有?+[]也是,那么表达\\怎么表达呢?——\\\\就是\\


例子:
a* 匹配aa,aaa……
[ab]* 匹配 abbaa,aaab,……
[^ab]* 匹配 cde,ccc,def……,只要字串中不出现a或b就可以。
[^\"]* 匹配 所有的不带引号的字符串

现在看一看上文中的一句
href=\"([^\"]*)\"
匹配页面中类似这样的。
href=\"http://lindaiyu.net/archiver/\"
href=\"http://lindaiyu.net/data/tech/38/40/49/cache/style_1.css\"
href=\"http://lindaiyu.net/data/tech/38/40/49/cache/style_1_append.css\"
href=\"http://lindaiyu.net/forum-2-1.html\"
href=\"http://lindaiyu.net/forumdisplay-2-1.html\"
href=\"http://lindaiyu.net/thread-2067-1-1.html\"

经过选择语句,
add:http://lindaiyu.net/forum.*
http://lindaiyu.net/forum-2-1.html 被选择
http://lindaiyu.net/forumdisplay-2-1.html 也被选择

经过选择语句,
add:http://lindaiyu.net/thread.*,
http://lindaiyu.net/forum-2-1.html被选择,


被选择的都会进入下载列表中等候下载。

注意href=\"([^\"]*)\"中的小括号,表示提取哪一段。

页面中常常用相对路径,比如
href=\"forum-2-1.html\"
href=\"thread-2067-1-1.html\"
象这一类的,分析引擎会先转为绝对路径
href=\"http://lindaiyu.net/forum-2-1.html\"
href=\"http://lindaiyu.net/thread-2067-1-1.html\"

被add选择的,会再次进入sub语句中,符合sub语句的就被排除。
经过 sub:http://lindaiyu.net/forumdisplay.*
被排除的 http://lindaiyu.net/forumdisplay-2-1.html


排除相对路径的连接还有一个更快的办法,这里说一下分析引擎的工作流程,
取得连接--->kill--->相对路径转为绝对路径--->add--->sub

那么语句
kill:forumdisplay.*
就可以提前排除forumdisplay.*这一类的相对连接。
分析引擎是把相对路径转为绝对路径后才进入add选择流程的,在这之前会先kill。

这里要说明一下,kill,add,sub语句出现的顺序可以是任意的,,而且可以加任意多的规则,分析引擎执行时会自动按kill-->add-->sub的顺序排好。

工程文件的整体结构:
begin之前的是工程文件头,之后的是文件体
文件体中每个\"url:\"开始一个节点,表示“符合这个规则的url页面内容这样来解析”
开始节点后先用all_content或between或area来描述区域
再用kill,add,sub来描述规则。

在我们软件的“工程模板”中有很多下载描述模板。大家可以看看。
把你写的描述文件放进beautyget.exe所在目录下的plugin目录下,就会在工程模板中出现

表述页面区域有三种方法:
1.all_contentk
选择所有,这是最简单的了
2.
betweenk
<td width=90 nowrap align=\"center\"><font color=white>更新日期</font></td>
<td align=\"right\">
会以这两行文字为起始、结束点,选择两者之间的内容。
(参看天涯社区下载描述文件)
引用:

  name:天涯社区—天涯真我
  starturl:http://cache.tianya.cn/publicfor ... /tianyamyself.shtml
  nthreads:3
  maxdepth:9

  begin

  #{
  url:http://cache.tianya.cn/publicfor ... /tianyamyself.shtml
  betweenk
  #<tr bgcolor=\"#6699cc\" align=\"left\" valign=center>
  <td width=90 nowrap align=\"center\"><font color=white>更新日期</font></td>
  <td align=\"right\">
  parse:href=\"([^\"]*)\"
  parse:href=&#39;([^&#39;]*)&#39;
  #天涯有这种连接href=&#39;http://cache.tianya.cn/..........&#39;
  add:http://cache.tianya.cn/publicforum/content/tianyamyself/.*
  #页面上的贴子
  add:http://cache.tianya.cn/new/publi ... myself&*
  #这就是那个“下一页”连接
  do
  #}
  …………后面的省略,请看工程模板中的。

3.
area:width=90(.*)nowrap
这是选择了在\"width=90\"和\"nowrap\"之间的内容


正则表达式工程文件方面就介绍差不多了,关于正则表达式,大家可以在网上找到很多详细的教程。

还有很多内容,嵌入DLL,嵌入lua,嵌入python……后文继续,

我们的工程模板中目前已经加进了discuz,phpwind,dvbbs,phpbb ……这些可都是采用的非常广泛的论坛哦,相信大家现在已经可以看懂并会写这些离线下载工程描述文件了,即使看不懂,也可以用这些来下载许多论坛许多网站的数据。如果你还是不懂正则表达式不会写脚本,也不要紧,在我们的论坛上提问,说明你的要求,一定会有很多热心的网友帮助解答的。

目前我们公布的是第一版,欢迎大家把发现的问题反馈给我们,希望得到大家的支持。
回复

使用道具 举报

发表于 2008-9-27 18:20:43 | 显示全部楼层
呵呵,我还不知道什么 是离线浏览器呢!支持一下吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-16 01:37 , Processed in 0.132056 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表