用watij爬取网页内容

段时间,移动组找我帮忙抓个数据:http://jwc.hust.edu.cn:81/index.aspx,我看了看,觉得应该没问题吧,就答应了。后来发现,asp.net真不是一般的变态啊。。。
尝试了各种方法,都不行,只好请教师傅。师傅也很纠结,后来不知道从哪儿搜出了个方法,用watir(web application test in ruby),通过ruby打开firefox然后访问网页,并对网页进行操作,来获取数据。
看起来很简单。。但是麻烦在于要编译一个firefox。。编译一个firefox也不是特麻烦。。麻烦在还得加个jssh的extension。。加个extension也不是很麻烦。。还不能用firefox的新版本。。话说那弄个旧版本吧,不难吧。。旧版本还我勒个去不能再ubuntu11.10上编译。。。。。后来纠结到了win32上,得把firefox删了,下个3.X的版本。。。
搞了好久,搞的好无语,最后周导居然还真的整出来了。。。这都不是重点,重点是我感觉这太难搞了,平台要求太高啊,兼容性太差啦。。 好吧其实是我嫌麻烦。。。
然后我打开了google,输入 watir java。 喵了个咪的,这不是有watij(web application test in java)吗!
一开始我还以为只是不用装ruby了而已,用了之后发现,什么系统版本,什么firefox版本都弱爆了好不好,别人直接把mozilla给你封装好了,直接用啊。所以最后发现真的是很简单。。

view source
print ?
01 packagecom.zhiweizhang.crawler;
02
03 importjava.io.BufferedWriter;
04 importjava.io.File;
05 importjava.io.FileWriter;
06
07 importorg.watij.webspec.dsl.Tag;
08 importorg.watij.webspec.dsl.WebSpec;
09
10 publicclassWatijCrawler {
11
12 privatestaticString homepage ="http://jwc.hust.edu.cn:81/index.aspx";
13
14 //教学楼对应value值,西十二8,东九7,西五5,东十二1
15 privatestaticString[] building = {"西十二","东九","西五","东十二"};
16 privatestaticString[] buildingValue = {"8","7","5","1"};
17
18 publicstaticvoidmain(String[] args)throwsException {
19 //打开网页,并隐藏webspec界面
20 WebSpec ws =newWebSpec().mozilla().hide();
21 ws.open(homepage);
22
23 for(inti =0; i <4; i ++) {
24 System.out.println("Fetching information of building "+ building[i]);
25 ws.find.select().with.id("Build").set("value", buildingValue[i]);//选择教学楼
26 ws.find.input().with.name("btnRightall").click();//选择所有教室
27 ws.find.input().with.name("Button1").click();//点击查询
28 intpage =0;
29 File file;
30 Tag tag = ws.find.a().with.innerText("后页");
31 //下载所有页的网页
32 while(tag.exists()) {
33 page++;
34 file =newFile(building[i] +"/"+ page +".html");
35 BufferedWriter bw =newBufferedWriter(newFileWriter(file));
36 System.out.println("Downloading page "+ page +" ...");
37 bw.write(source());
38 bw.close();
39 tag.click();
40 tag = ws.find.a().with.innerText("后页");
41 }
42 System.out.println("All the pages have been downloaded.");
43 }
44 }
45
46 }

太方便了,这个斑马以后登录各种网站都可以直接这么写了。
值得一提的是,watij其实是一个测试工具,用于测试web应用,就如名字所说。。。

你可能感兴趣的:(用watij爬取网页内容)