摘要://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 ?...
下一页 摘要:概要:本文通过查看一个精心构造的类结构的运行输出和使用javap工具查看实际生成的java字节码(bytecode)向java程序员展示了一个类在运行时是如何构造生成的。 关键字: java 构造 javap 字节码 bytecode 按照java规范,一个类实例的构造过程是遵循以下顺序的: 1.如果构造方法(constructor,也有翻译为构造器和构造函数的)是有参数的则进行参数绑定。 ......