`
superonion
  • 浏览: 126932 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

用Watij爬取网页内容

阅读更多

      最近一项目需要从某高校教务处网站爬取各教学楼的教室安排数据,网址为:http://202.114.5.131/index.aspx 。

      用firebug监视,点击页面上的“查询”按钮后,发现请求url是被加密过的,无法获取。后经人指点,可用Watij (Web Application Testing in Java) 来模拟网页控件操作,获取数据。

      Watij支持模拟IE、FireFox,我用的是FireFox,需要从官网上http://sourceforge.net/projects/watij/files/ 下载webspec_xxx.zip,解压,然后把java/dist/目录下的webspec.jar以及lib/目录下的全部jar包引入工程。

 

代码如下:

 

package org.itec.classroom;

import java.io.BufferedWriter;  
import java.io.File;  
import java.io.FileWriter;  
import org.watij.webspec.dsl.Tag;  
import org.watij.webspec.dsl.WebSpec;  

public class WatijClassroom {

	private static String homepage = "http://202.114.5.131/index.aspx";

	//教学楼对应value值,西十二8,东九7,西五5,东十二1
	private static String[] building = {"W12", "E9", "W5", "E12"};
	private static String[] buildingValue = {"8", "7", "5", "1"};
	private static String filePath = "D:\\Classroom\\";

	public static void main(String[] args) throws Exception {
		//打开网页
		WebSpec spec = new WebSpec().mozilla();
		spec.open(homepage);

		for (int i = 0; i < 4; i ++) {
			System.out.println("Fetching data of building " + building[i]);
			spec.find.select().with.id("Build").set("value", buildingValue[i]);//选择教学楼
			spec.find.input().with.name("btnRightall").click();//选择所有教室
			spec.find.input().with.name("Button1").click();//点击查询
			int page = 0;
			File file;
			Tag tag = spec.find.a().with.innerText("后页");
			//下载所有页的网页
			while (tag.exists()) {
				page++;
				file = new File(filePath, building[i] + "/" + page + ".html");
				BufferedWriter bw = new BufferedWriter(new FileWriter(file));
				System.out.println("Downloading page " + page + " ...");
				String htmlString = spec.source();  // get the brower's source as a html string
				bw.write(htmlString);
				bw.close();
				tag.click();
				tag = spec.find.a().with.innerText("后页");
			}
			System.out.println("All the pages have been downloaded.");
		}
	}

}

      注:代码参考此文:http://www.zhiweizhang.com/2011/11/24/%e7%94%a8watij%e7%88%ac%e5%8f%96%e7%bd%91%e9%a1%b5%e5%86%85%e5%ae%b9/

 

运行后如下图:


 

  • 大小: 31.4 KB
1
0
分享到:
评论
1 楼 cangbaotu 2016-05-27  
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ̄)"。所以我们团队开发了一个专门让开发者用简单的几行 javascript 就能在云上编写和运行复杂爬虫的系统,叫神箭手云爬虫开发平台: http://www.shenjianshou.cn 。欢迎同行们来试用拍砖,尽情给俺们提意见。有想法的可以加群讨论: 342953471

相关推荐

    Auto-Testing PPT (Watij)

    To learn one of Auto-Testing framework in java

    \watij_release_3.2.1.zip

    一个基于java的web应用测试工具,开源的。

    淘宝自动发货源代码,用到了spring2 和 hibernate3 还有watij

    先安装watij launchWatijBeanShell.bat 然后, 使用ant AutoMain 就可以了 。还有需要你在IE上登录淘宝账号。 压缩包大于20MB 发不上去了。 只发源码吧。用到了spring2 和 hibernate3 还有watij

    watij-dsl:Watij 浏览器自动化 dsl

    Xtext 项目: fil.emn.watij 用语法:Watij.xtext Xtext生成的项目: fil.emn.watij 要启动 Watij 文件: 运行 Eclipse 应用程序 在新的 Eclipse 应用程序中创建一个新项目 创建一个扩展名为 *.watij 的文件(您...

    Watij - Web Application Testing in Java-开源

    Watij(发音为wattage)代表Java中的Web应用程序测试。 基于Watir的简单性并借助Java的强大功能,Watij通过真实的浏览器http://groups.google.com/group/watij自动执行Web应用程序的功能测试。

    watgui-开源

    Web应用程序测试GUI程序开发为以与用户使用watij Java API使用Internet Explorer相同的方式测试Web应用程序

    java文集

    ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...

    AutoeXplorer:非程序员的开源自动Web浏览。-开源

    我们是面向非程序员的开源,免费使用的自动化网络浏览器。 只需单击一个按钮即可自动执行平常的Web任务,并在需要时进行回放。 安排在您外出时播放,或在上班时准备好播放。 我们支持所有主要的Web浏览器,包括Fire...

    Wreb应用系统的自动化测试解决75-案 (2010年)

    测试自动化管理系统用来控制整个测试过程和项目的进展,功能方面的自动化测试主要采用关键字驱动的web系统测试框架watij来实现,而性能测试的自动化则利用分布式的测试工具Tsung自动化测试不能完全取代人工测试,...

    Hanno Model Based Web Testing Framework-开源

    Hanno是Java中基于模型的测试自动化框架,用于Web应用程序的动态探索性测试。 它基于Apache Commons SCXML和Watij构建。

Global site tag (gtag.js) - Google Analytics