采用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 οnclick=javascript:getInfo(); href="#">
test ok</A>
<SCRIPT language=javascript><div>test ok</div>
</body>
</html></SCRIPT>
</BODY></HTML>
关键词"baidu",已经变成“test ok”
对得到的html,交由xpath,w4f来解析出相关信息。爬虫的重点,将是建立一个工作流引擎,通过配置模板,来模拟用户的点击行为,最终获取所需的信息。