HTTP请求的实现主要借助HttpClient来完成。使用HttpClient编程主要有以下基本步骤:
a)创建HttpClient的一个实例;
b)创建某个方法(DeleteMethod、EntityEnclosingMethod、ExpectContinueMethod、GetMethod、HeadMethod、MultipartPostMe-thod、OptionsMethod、PostMethod、PutMethod、TraceMethod)的一个实例,一般用目标URL为参数;
c)让HttpClient执行该方法;
d)读取应答信息;
e)释放连接;
f)处理应答。
在HttpClient中主要用GetMethod和PostMethod两个方法分别实现HTTP请求中的get和post方法。按上面的步骤,通过HttpWatch获取其所需参数,对其中动态变化的参数实时动态提取,进行模拟用户登录访问,可以获得用户所需要查询的结果页面。
3信息提取原理与算法
对Web页面的信息提取主要表现在对其标记节点和文本内容的分析,构造出健壮的包装器。信息抽取的规则在包装器中占有很重要的地位。文献[4]提出利用隐马尔可夫模型提取文档的元数据信息的方法, 但其只关注于提取文档头部的元数据信息。Kushmerick等人对具有HLRT(head-left-right-tail)结构的Web页面使用LR分隔符集表达包装器[5]。但是该方法只针对格式特别规整的表结构,有其局限性。抽取工具TSIMMIS、W4F等,采用了一些基于Web文档结构的抽取规则,可以根据结构树中的节点准确定位HTML页面中的TAG标记,能够准确定位到所要抽取信息的位置,不会与其他具有类似结构的数据相混淆。但是当页面结构发生了变化,结构中的任一个层次发生微小的改变就会最终影响到抽取规则的失效性。NoDoSE、WHISK、STALKER等抽取工具,采用基于特征模式匹配的抽取规则,能够在Web文档的全文中识别具有特征模式的子串,不需要结构层次的信息,对于网页结构变化多的一类的网页能够很好地处理。但是,没有结构层次信息的支持,缺少对文本的定位信息,抽取过程易被具有类似结构的其他数据所干扰。针对这些问题,本文结合文档结构定位的准确性与特征模式匹配的自由性两种优势进行Web页面的信息抽取,可以对电子期刊资源信息进行精确抽取。
基于结构的信息抽取技术主要采用HTML中所包含的结构特征、位置特征、显示特征、语义特征和引用特征形成抽取规则。抽取规则主要包括抽取路径、左右邻标志及节点特征等。
本文原文
由于所需抽取信息的左右邻标志可能与页面中的其他信息的左右邻标志产生冲突,将并不需要的信息抽取出来。在抽取信息时需要限定抽取的整体范围,确定从HTML文档中什么地方开始抽取,直到什么地方结束。这样可减少产生冲突的范围。
HtmlParser是一个对现有的HTML进行分析的快速实时的解析器,主要依靠HtmlParser中的Node来表达HTML。Node是形成树结构表示HTML的基础,所有的数据表示均是接口Node的实现。Node定义了与页面树结构所表达的页面Page对象,获取父、子、兄弟节点的方法,节点到对应HTML文本的方法,该节点对应的起止位置,过滤方法及Visitor访问机制。Node分成三类:RemarkNode代表HTML中的注释;TagNode代表标签节点,是种类最多的节点类型;TextNode表示文本节点。需要提取的信息主要就是TextNode表示的文本节点所对应的文本信息。
通过分析待抽取信息标签节点的特征,过滤掉与其特征不相关的标签节点,然后根据其所在路径,可以精确定位信息所在的位置。以抽取维普中的信息为例,代码如下:
Parser parser=new Parser();
//括号中应填上带抽取页面存放本地硬盘位置或其URL地址
parser.setEncoding("UTF-8");//设定解析编码格式
NodeFilter filter=null;//初始化节点过滤器
filter=new TagNameFilter("div");//过滤掉不是div的节点
NodeList list=parser.parse(filter); //将过滤后的节点存入数组中
Node node=list.elementAt(1);


















