最近登录校内在搜索一个大学老乡的时候,点击搜索时弹出一个框,这里边有世界各地的大学名称信息。于是便想要是能把这些数据给采集到,存起来,以后说不定能用到。于是有了下边的废话。 首先准备工具: 用到的jar包有: json-lib-2.4.jar(解析json数据用) json-lib-2.4.jar依赖的包有(commons-beanutils.jar,commons-collections-3.1.jar,commons-lang-2.3.jar,ezmorph-1.0.6.jar,morph-1.1.1.zip) 本来我想存到文件里的,后来想想还是存到数据库吧,于是又把以前常用到的工具类拿出来了 数据库用到的包有: commons-dbcp-1.4.jar commons-pool.jar mysql-connector-java-5.0.3-bin.jar 用到的抓包工具: httpwatchV7(强大的http分析工具) 其实在浏览器中做任何的动作,都是可以用JS脚本捕获到,并且进行处理的,那么点在搜索框中鼠标点下时,便会发出一个HTTP请求,服务器给出响应。我们关注的响应是在点击了搜索框之后通过http://s.xnimg.cn/a27085/allunivlist.js得到的响应,由于是在浏览器后台发出的,因此在浏览器我们并不能看到这个链接,可以通过httpwatch得到。分析响应内容是json格式的数据,并且是unicode编码的,因此我们可以用json这个包进行解析,转换称响应的对象,这样便能达到目地了。思路就是这么简单,不过关键是发现并去利用互联网强大的资源,如果你有更多的发现,利用自己所学的能够运用出去才是王道。下边我把我的主要的源代码程序传给大家,可以作一个参考,希望对你以后有所帮助.
package demo;
//根式转换类
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class EncoderUtils {
public static String UnicodeToGB2312(String str) {
String res = null;
StringBuffer sb = new StringBuffer();
try {
while (str.length() > 0) {
if (str.startsWith("\\u")) {
int x = Integer.parseInt(str.substring(2, 6), 16);
sb.append((char) x);
str = str.substring(6);
} else {
sb.append(str.charAt(0));
str = str.substring(1);
}
}
res = sb.toString();
} catch (Exception e) {
e.printStackTrace(System.err);
}
return res;
}
}
package demo;
}
//由于代码较多,剩下的代码进行了打包。主类在ParserSchool