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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值