支持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来解析出相关信息。爬虫的重点,将是建立一个工作流引擎,通过配置模板,来模拟用户的点击行为,最终获取所需的信息。
一个简单的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来解析出相关信息。爬虫的重点,将是建立一个工作流引擎,通过配置模板,来模拟用户的点击行为,最终获取所需的信息。
相关文章推荐
- ajax 实现加载页面、删除、查看详细信息,以及bootstrap网页的美化
- 利用正则表达式抽取网页信息
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- html使用ajax+jsp更新网页部分信息
- JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
- 网页库级垂直搜索引擎技术(三)一堆信息抽取的资料文档
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- WEB网页结构化信息抽取技术介绍(网页库级)
- 网页信息抽取阶段性成果(续)
- Java使用正则表达式及字符串操作,抽取网页信息
- 利用视觉模型对网页有效信息的抽取
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- 今天修正了网页抽取器,一个小时可抽取10W笔黄页信息
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- 抽取网页信息
- WEB网页结构化信息抽取技术介绍
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- xpath与正则表达式抽取网页信息的速度比较
- TEE方案商、开源TEE、以及芯片支持信息
- Scrapy框架结合Spynner采集需进行js,ajax动态加载的网页并提取网页信息(以采集微信公众号文章列表为例)