最近登录校内在搜索一个大学老乡的时候,点击搜索时弹出一个框,这里边有世界各地的大学名称信息。于是便想要是能把这些数据给采集到,存起来,以后说不定能用到。于是有了下边的废话。
首先准备工具:
用到的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
分享到:
相关推荐
标题“获取世界大学数据(人人网)”指向的是一个与数据采集相关的项目,可能是通过编程方式从人人网这个社交平台获取关于全球大学的信息。在这个过程中,开发者可能利用了网络爬虫技术来抓取并整理这些数据。源码...
标题 "获取全国中学信息(人人网)" 暗示我们关注的是一个涉及数据抓取或网络爬虫的项目,具体是从人人网这个社交平台上抓取全国中学的相关信息。这通常涉及到编程语言如Python,可能使用了requests库来发送HTTP请求...
我们观察其他网站,比如renren.com网,它的高校信息就比较齐全,查看了相关代码后,发现,renren.com将所有高校信息封装为了一个js的json格式的数据,所以非常方便我们直接拿过来用。我们既可以使用HttpClient来爬取...
本文将深入探讨人人网接口的使用,帮助你理解如何利用这些接口实现登录功能,让你的程序能够与人人网进行数据交互,增强用户体验。 首先,人人网接口主要分为OAuth 2.0授权框架和RESTful API两大部分。OAuth 2.0是...
标题 "Node.js-人人网相册获取" 涉及的知识点主要集中在使用 Node.js 这一 JavaScript 后端框架来实现对人人网相册数据的抓取和处理。这通常包括以下几个方面: 1. **Node.js 基础**:Node.js 是一个基于 Chrome V8...
标题中的"C#全国高校选择表_模仿人人网的_javascript大学选择_university_univ"表明这是一个基于C#编程语言,并且模仿了人人网的用户界面设计的项目,主要用于实现全国高校的选择功能。该项目可能结合了JavaScript,...
模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网模仿人人网...
标题中的“抓取网上信息,抓取人人网院校”指的是网络爬虫技术在特定场景的应用,即通过编程方式从人人网这样一个社交平台获取与院校相关的信息。网络爬虫是自动化地从互联网上提取大量数据的一种程序,它通常由网页...
【标题】"人人网信息备份工具"涉及到的主要知识点是利用编程语言进行数据抓取和备份,特别是使用Python作为开发工具。人人网是一个社交网络平台,用户可以在这里分享信息、交流互动。随着时间的推移,这些数据可能变...
2014年6月 人人网高校数据 mysql数据直接导入使用 包含高中 大学 技校 技校大学没有具体分 由于之前找数据花了很多积分,但是还没有满意的,最后还是从人人网把数据扒下来处理了一下,所以本资源下载分设定比较高,...
5. **访问人人网API**:有了访问令牌,你可以通过SDK调用人人网的API,获取用户的公开信息、好友列表等,甚至发布状态更新。 6. **安全存储令牌**:为了确保用户下次登录时能无缝衔接,你需要在服务器上安全地存储...
人人网.NET API是一个专为开发者设计的平台,用于与人人网进行交互,通过编程的方式实现对用户信息的获取、发布动态、管理应用等操作。这个API是基于.NET框架构建的,使得.NET开发者能够轻松地集成人人网的功能到...
人人网,曾是中国大学生广泛使用的社交网络平台,其中包含了大量的个人照片、日志和其他用户分享的内容。这个工具可能是一个扩展或脚本,专门为在谷歌浏览器上运行而设计,目的是帮助用户方便快捷地保存他们感兴趣的...
在Android应用开发中,"分享到人人网Demo"是一个典型的社交功能实现,它允许用户将内容(如文本、图片、链接等)分享到人人网这一社交平台。在本项目中,开发者通过引入特定的库工程来实现这一功能,具体涉及以下几...
人人网iOS版SDK是一款专为iOS开发者设计的软件开发工具包,它允许开发者在自己的iOS应用中集成人人网的功能,如社交分享、用户登录、...对于想要利用人人网社交网络功能的开发者来说,这个SDK是一个非常有价值的资源。
在Android平台上实现“人人网分享”功能,是一个常见的社交网络集成需求。这个功能允许用户将应用内的内容,如文字、图片、链接等,方便地分享到人人网上,从而提升用户体验和应用的社交互动性。下面将详细介绍如何...
这个是关于第三方连接人人网的demo,研究了两天,之前被官网所误导,它上面是api1.0的demo,结果老报错——API1.0即将过期,请换API2.0,现在这个经过测试能获得用户的学校,性别,头像等信息,具体参见人人网开放...
包括用户登录、获取用户信息、发布动态、分享到人人网等常见操作的示例。开发者可以通过阅读和理解这些代码,快速学习如何在自己的项目中使用人人网SDK。 2. 文档:SDK通常会附带详细的技术文档,解释了各种API的...
3. **获取请求码(Authorization Code)**:在用户同意授权后,人人网会返回一个请求码。这个请求码是临时的,开发者需要将它发送到服务器端,换取访问令牌。 4. **请求访问令牌(Access Token)**:使用请求码,...