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

采用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来解析出相关信息。爬虫的重点,将是建立一个工作流引擎,通过配置模板,来模拟用户的点击行为,最终获取所需的信息。

你可能感兴趣的:(JavaScript,Ajax,exception,function,XMLhttpREquest,工作流引擎)