当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 创建智能网络蜘蛛 NT-FAMILY: 宋体; mso-as
 

 

 ·用java取得本机的ip和机器名    »显示摘要«
    摘要://iplabel.javaimport java.net.*;import java.awt.*;import javax.swing.*; public class iplabel{jframe frame;jlabel label1,label2;jpanel panel;string ip,address; public void getip(){try{inetaddress add......
    摘要:呵呵,这个算法终于实现了,在运行这个程序的时侯, 不停的按回车键,可以看到种子填充的路径.呵呵挺好玩的./* win-tc bgi 图形编程模板 */ #include "conio.h"#include "graphics.h"#define closegr closegraph void initgr(void) /* bgi初始化 */{int g......


创建智能网络蜘蛛——如何使用Java网络对象和HTML对象(翻译)
创建智能网络蜘蛛

       作者:mark o. pendergast 【程序编程相关:数值型货币的大写转换

       ——如何使用java网络对象与html对象(翻译) 【推荐阅读:C#设计界面(office2003,VS

  【扩展信息:将ASP的Debug变得简单的两个函数!

原文:http://www.javaworld.com/javaworld/jw-11-2004/jw-1101-spider.html

摘要

       你是否想过创建自己的符合特定标准的网站数据库呢?网络蜘蛛,有时也称为网络爬虫,是一些根据网络链接从一个网站到另外一个网站,检查内容与记录位置的程序.商业搜索站点使用网络蜘蛛丰富它们的数据库,研究人员可以使用蜘蛛获得相关的信息.创建自己的蜘蛛搜索的内容.主机与网页特征,比如文字密度与内置的多媒体内容.这篇文章将告诉你如何使用java的html与网络类来创建你自己的功能强大的网络蜘蛛.

 

       这篇文章将介绍如何在标准java网络对象的基础上创建一个智能的网络蜘蛛.蜘蛛的核心是一个基于关键字/短语标准与网页特征进行深入网络搜索的递归程序.搜索过程在图形上类似于jtree结构.我主要介绍的问题,例如处理相关的url,防止循环引用与监视内存/堆栈使用.另外,我将介绍再访问与分解远程网页中如何正确是用java网络对象.

 

l         蜘蛛示例程序

示例程序包括用户界面类spidercontrol.网络搜索类spider,两个用作创建jtree显示结果的类urltreenode与urlnoderenderer,与两个帮助验证用户界面中数字输入的类integerverifier与verifierlistener.文章末尾的资源中有完整代码与文档的琏接.

spidercontrol界面由三个属性页组成,一个用来设置搜索参数,另一个显示结果搜索树(jtree),第三个显示错误与状态信息,如图1

图1 搜索参数属性页

搜索参数包括访问网站的最大数量,搜索的最大深度(链接到链接到链接),关键字/短语列表,搜索的顶级主机,起始网站或者门户.一旦用户输入了搜索参数,并按下开始按钮,网络搜索将开始,第二个属性页将显示搜索的进度.

图2 搜索树

       一个spider类的实例以独立进程的方式执行网络搜索.独立进程的使用是为了spidercontrol模块可以不断更新搜索树显示与处理停止搜索按钮.当spider运行时,它不断在第二个属性页中为jtree增加节点(urltreenode).包含关键字与短语的搜索树节点以蓝色显示(urlnoderenderer).

当搜索完成以后,用户可以查看站点的统计,还可以用外部浏览器(默认是位于program files目录的internet explorer)查看站点.统计包括关键字出现次数,总字符数,总图片数与总链接数.

l         spider类

spider类负责搜索给出起点(入口)的网络,一系列的关键字与主机,与搜索深度与大小的限制.spider继承了thread,所以可以以独立线程运行.这允许spidercontrol模块不断更新搜索树显示与处理停止搜索按钮.

构造方法接受包含对一个空的jtree与一个空的jtextarea引用的搜索参数.jtree被用作创建一个搜索过程中的分类站点记录.这样为用户提供了可见的反馈,帮助跟踪spdier循环搜索的位置.jtextarea显示错误与过程信息.

构造器将参数存放在类变量中,使用urlnoderenderer类初始化显示节点的jtree.直到spidercontrol调用run()方法搜索才开始.

run()方法以独立的线程开始执行.它首先判断入口站点是否是一个web引用(以http,ftp或者www开始)或是一个本地文件引用.它接着确认入口站点是否具有正确的符号,重置运行统计,接着调用searchweb()开始搜索:

     public void run()

     {

       defaulttreemodel treemodel = (defaulttreemodel)searchtree.getmodel(); // get our model

       defaultmutabletreenode root = (defaultmutabletreenode)treemodel.getroot();

       string urllc = startsite.tolowercase();

       if(!urllc.startswith("http://") && !urllc.startswith("ftp://") &&

            !urllc.startswith("www."))

         {

          startsite = "file:///"+startsite;   // note you must have 3 slashes !

         }

         else // http missing ?


...   下一页
 ·深入分析java中类的构造    »显示摘要«
    摘要:概要:本文通过查看一个精心构造的类结构的运行输出和使用javap工具查看实际生成的java字节码(bytecode)向java程序员展示了一个类在运行时是如何构造生成的。  关键字: java 构造 javap 字节码 bytecode  按照java规范,一个类实例的构造过程是遵循以下顺序的:  1.如果构造方法(constructor,也有翻译为构造器和构造函数的)是有参数的则进行参数绑定。 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE