最近登录校内在搜索一个大学老乡的时候,点击搜索时弹出一个框,这里边有世界各地的大学名称信息。于是便想要是能把这些数据给采集到,存起来,以后说不定能用到。于是有了下边的废话。
首先准备工具:
用到的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;
//文件读写工具类
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Properties;
public class StringUtils {
// 将流写入一个文件
public static void writeFileFromStream(String filename,InputStream in){
if(filename==null || filename.trim().length()==0)
return;
File file=new File(filename);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fou=null;
try {
fou = new FileOutputStream(file);
byte []buffer=new byte[1024*4];
int len=-1;
while((len=in.read(buffer))!=-1){
fou.write(buffer,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(in!=null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fou!=null)
try {
fou.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//将字符串写进一个文件
public static void writeFileFromString(String filename,String str){
if(filename==null || filename.trim().length()==0)
filename="tmp.txt";
File file=new File(filename);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedWriter writer=null;
BufferedReader reader=null;
try {
writer=new BufferedWriter(new FileWriter(file));
reader=new BufferedReader(new StringReader(str));
String tmp=null;
StringBuffer buffer=new StringBuffer();
while((tmp=reader.readLine())!=null)
buffer.append(tmp+"\n");
writer.write(buffer.toString());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//从流中得到字符串格式内容
public static String getStringFromStream(InputStream in) {
BufferedReader reader=null;
reader = new BufferedReader(new InputStreamReader(in));
StringBuffer buffer=new StringBuffer();
String str=null;
try{
while((str=reader.readLine())!=null){
buffer.append(str+"\n");
}
reader.close();
}catch(Exception ex){
ex.printStackTrace();
}
return buffer.toString();
}
//得到数据库配置的属性信息
public static Properties getDBconfig(){
Properties properties=new Properties();
InputStream in = null;
try {
in = new FileInputStream(new File("config/dbconfig.ini"));
properties.load(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(in!=null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return properties;
}
}
//由于代码较多,剩下的代码进行了打包。主类在ParserSchool
- 大小: 27.5 KB
- 大小: 68.4 KB
- 大小: 35.3 KB
- 大小: 64.7 KB
分享到:
相关推荐
NULL 博文链接:https://yiyiboy2010.iteye.com/blog/1510638
模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网...
我们观察其他网站,比如renren.com网,它的高校信息就比较齐全,查看了相关代码后,发现,renren.com将所有高校信息封装为了一个js的json格式的数据,所以非常方便我们直接拿过来用。我们既可以使用HttpClient来爬取...
NULL 博文链接:https://yiyiboy2010.iteye.com/blog/1512987
2014年6月 人人网高校数据 mysql数据直接导入使用 包含高中 大学 技校 技校大学没有具体分 由于之前找数据花了很多积分,但是还没有满意的,最后还是从人人网把数据扒下来处理了一下,所以本资源下载分设定比较高,...
这个是关于第三方连接人人网的demo,研究了两天,之前被官网所误导,它上面是api1.0的demo,结果老报错——API1.0即将过期,请换API2.0,现在这个经过测试能获得用户的学校,性别,头像等信息,具体参见人人网开放...
模仿人人网的_javascript_全国高校选择表大学选择_university_univ, 其中有asp.net写的界面,C#语言,以及.cs文件和一个整理好的hmtl界面。
调用人人网API实现,利用人人网账号登陆获取登陆信息,现在大部分购物网站和娱乐网站都有这种功能,这里只是简单介绍人人的方式
所有环境均在 OS X 下操作,不保证 Windows 的兼容性(如果 windows 中无法弹出验证码,可以在 locals 目录下查看)。
这是网友做的一个人人网的改造工具 利用谷歌浏览器 在谷歌浏览器的支持下 一些自己喜欢的图片可以直接打包下载 方法里面都有
人人网项目网站
人人网广告报价 广告投放形式 人人网广告怎么做 人人网广告
这是人人网开发api 这是人人网开发api 这是人人网开发api这是人人网开发api 这是人人网开发api 这是人人网开发api 这是人人网开发api 这是人人网开发api 这是人人网开发api这是人人网开发api 这是人人网开发api
使用web 中的div+css开发的人人网的登陆页面,几乎完全一样
人人网营销助手可以实现自动登录人人账号、自动为您寻找并添加好友,还可以根据对方性别,对方好友数,对方人气等限制,实现自动判断是否加其为好友,方便您根据市场定位选择有效好友。人人网营销助手其它功能:1 ...
人人网大学资源库,这是导出的sql语句,下载即可直接导入使用。需要的就别吝啬那点积分了。
获得人人网网站上的好友列表的爬虫代码,可以分析人人网上每个人的好友信息,以便画社交网络图来进一步分析
登陆人人网的教程,本教程是笔者亲手制作,不妥之处还望提出您的宝贵意见和建议,这是一个可执行文件,解压后就可直接打开,决对的绿色
辛苦好久了终于弄出来了人人网的接口!