`
superonion
  • 浏览: 128264 次
  • 性别: 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

相关推荐

    \watij_release_3.2.1.zip

    - **watij.jar**:核心库文件,包含了Watij的所有类和方法,是使用Watij进行测试的基础。 - **src**:源代码目录,可能包含了一些示例代码或者扩展库的源码,供用户参考和学习。 - **res**:资源文件夹,可能包含...

    Auto-Testing PPT (Watij)

    - **纯Java实现**:Watij完全用Java编写,因此它能很好地融入Java开发环境,与其他Java库和工具集成。 - **真实浏览器自动化**:Watij通过实际的浏览器执行测试,确保测试结果与用户的真实体验一致。 - **简单易用**...

    淘宝自动发货源代码,用到了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应用程序的功能测试。

    基于开源软件的自动化测试、监控及智能运维系统的研发 (2).pdf

    Watij则专注于Java应用的自动化测试,它提供了易于使用的API,便于编写测试脚本。这两种工具结合使用,可以构建一个全面的自动化测试框架,覆盖多种类型的系统和应用,提高测试效率,降低人为错误,确保系统的稳定性...

    FT自动测试工具的介绍

    B) API:我们通过它提供的 API 用 Java 语言进行编程,扩展性比较大,很灵活,采用特殊的设计或方法能够计算出每个测试用例运行的时间或某个功能模块运行的所需时间。 * 浏览器支持:IE、火狐等 * 测试方式:实际的...

    watgui-开源

    这款工具基于Watij Java API,Watij是一个Java库,允许开发者使用Java编程语言来自动化对网页浏览器的操作,尤其是Internet Explorer。通过WatGui,用户可以更直观地编写和执行Web应用的自动化测试,而无需深入理解...

    java文集

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

    基于开源软件的自动化测试、监控及智能运维系统的研发.pdf

    Selenium作为一个能进行浏览器自动化测试的工具,特别适合于模拟真实用户操作,它可以与多种编程语言结合使用,并且支持多种浏览器驱动。而WatiJ是基于Java语言的自动化测试框架,能够处理复杂场景下的Web应用测试。...

    软件测试面试资料

    摒弃常见的QTP(Quick Test Professional)盗版使用,转向更专业且合法的解决方案,如Watij或Selenium搭配TestNG或FitNesse,并整合DBUnit进行数据驱动测试。这样的组合不仅体现技术前沿,也符合法律与道德标准。 ...

    web自动化测试技术交流.pptx

    Wati*系列(如WatiN, WatiR, WatiJ)和Google Web Driver也是Selenium家族的一部分,它们为不同的编程语言和环境提供了支持。 在实践中,我们应根据业务需求选择测试用例,避免过于复杂的界面测试,可能需要考虑半...

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

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

    Hanno Model Based Web Testing Framework-开源

    在Java编程语言环境下,Hanno利用了Apache Commons SCXML(State Chart XML)和Watij(Web Application Testing in Java)这两个强大的库来实现其核心功能。 Apache Commons SCXML是一个通用的状态机引擎,它可以...

Global site tag (gtag.js) - Google Analytics