您的位置:首页 > 理论基础 > 计算机网络

支持AJAX的网页信息抽取方案

2009-10-03 00:43 363 查看
采用java版的watij,关于watij的配置方法比较简单,略。

一个简单的test case。如下:
js.html

<html>
<title>test javascript</title>
<script language="javascript">
var xmlHttp = false;
try {
xmlHttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlHttp = false;
}
}
}
if (!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}
 
function getInfo() {

var url = "1.php";
xmlHttp.open("GET", url, true);//这里的true代表是异步请求
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
 
function updatePage(){
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("gg").innerHTML = response;
}
}

</script>
<body >
<a id = "gg" onClick="javascript:getInfo();" href="#">baidu</a>
</body>
</html>

1.php

<?
echo "test ok";
?>

Test.java

package net.cooleagle.test.watij;

import watij.finders.UrlFinder;
import watij.runtime.ie.IE;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
 IE ie = new IE();
 try{
 ie.start();
 ie.visible(false);
 ie.goTo("http://localhost/js.html");
 ie.link(new UrlFinder("#"));
 ie.link(0).click();
 System.out.println(ie.html());

 }catch(Exception e){
 e.printStackTrace();
 }
     
}

}

输出:

<HTML><HEAD><TITLE>test javascript</TITLE>
<SCRIPT language=javascript>
var xmlHttp = false;
try {
xmlHttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlHttp = false;
}
}
}
if (!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}
 
function getInfo() {

var url = "1.php";
xmlHttp.open("GET", url, true);//这里的true代表是异步请求
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
 
function updatePage(){
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("gg").innerHTML = response;
}
}

</SCRIPT>
</HEAD>
<BODY><A id=gg onclick=javascript:getInfo(); href="#">test ok</A>
<SCRIPT language=javascript><div>test ok</div>
</body>
</html></SCRIPT>
 </BODY></HTML>

关键词"baidu",已经变成“test ok”

对得到的html,交由xpath,w4f来解析出相关信息。爬虫的重点,将是建立一个工作流引擎,通过配置模板,来模拟用户的点击行为,最终获取所需的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息