文章目录
  1. 1. 简单介绍
  2. 2. 实例

简单介绍

以下是使用HttpWatch抓包获取网页信息解析筛选自己需要的信息放到手机上的一个实例,HttpWatch的简单使用教程可以看上一篇博客。

实例

代码比较多这里就不贴出全部的,介绍下主要代码及实现的方法。
首先我们要得到Post的参数键值对,通过抓包可以获取下来,解析用的Jsoup方法比较快捷,解析筛选的主要代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Document document=Jsoup.parse(html);

/**
* 获取学期列表
*/
Elements e_term=document.select("select[name=Sel_XNXQ]").select("option");
for(Element e:e_term){
schedule_term_id.add(e.attr("value").toString());
schedule_term_data.add(e.text().toString());
}

/**
* 获取班级列表
*/
Elements e_class=document.select("select[name=Sel_XZBJ]").select("option");
for(Element e:e_class){
schedule_class_id.add(e.attr("value").toString());
schedule_class_data.add(e.text().toString());
}

将获取到的学期和班级数据放到Spinner上去

然后Post参数给获取返回的课表结果解析

1
2
3
4
5
6
7
8
9
pairs=new ArrayList<BasicNameValuePair>();
pairs.add(new BasicNameValuePair("Sel_XNXQ", term_id));
pairs.add(new BasicNameValuePair("txtxzbj", ""));
pairs.add(new BasicNameValuePair("type", "2"));
pairs.add(new BasicNameValuePair("chkrxkc", "1"));
pairs.add(new BasicNameValuePair("Sel_XZBJ", class_id));
pairs.add(new BasicNameValuePair("Submit01", "????"));
Schedule_AsyncTask task=new Schedule_AsyncTask(Schedule_Main.this, schedule_handler, pairs);
task.execute(Schedule_RequestType.Schedule_Query);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
datas=new ArrayList<Schedule_Query_Data>();

Element elements=Jsoup.parse(html).select("table").remove(3);
Elements e_schedule=elements.select("tr");

for(int i=1;i<e_schedule.size();i++){
Schedule_Query_Data data=new Schedule_Query_Data();
data.setCoures(e_schedule.get(i).select("td").get(0).text());
data.setScore(e_schedule.get(i).select("td").get(1).text());
data.setStudy_time(e_schedule.get(i).select("td").get(2).text());
data.setTest_way(e_schedule.get(i).select("td").get(3).text());
data.setTeacher(e_schedule.get(i).select("td").get(4).text());
data.setSchedule_id(e_schedule.get(i).select("td").get(5).text());
data.setSchedule_number(e_schedule.get(i).select("td").get(6).text());
data.setWeek(e_schedule.get(i).select("td").get(7).text());
data.setSection(e_schedule.get(i).select("td").get(8).text());
data.setPlace(e_schedule.get(i).select("td").get(9).text());
datas.add(data);
}

点击查询按钮后下面即显示课表信息

点击某一项课表弹出对话框显示课表详情信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lv_schdule_detail.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
AlertDialog.Builder builder=new AlertDialog.Builder(Schedule_Main.this);
builder.setTitle("课表信息");
Schedule_Query_Data data=list.get(arg2);
builder.setMessage("课程:\t"+data.getCoures()+"\n"
+"学分:\t"+data.getScore()+"\n"
+"总学时:\t"+data.getStudy_time()+"\n"
+"考核方式:\t"+data.getTest_way()+"\n"
+"教师:\t"+data.getTeacher()+"\n"
+"上课班号:\t"+data.getSchedule_id()+"\n"
+"上课人数:\t"+data.getSchedule_number()+"\n"
+"周次:\t"+data.getWeek()+"\n"
+"节次:\t"+data.getSection()+"\n"
+"地点:\t"+data.getPlace()+"\n"
);
builder.setPositiveButton("确定", null);
builder.create();
builder.show();
}
});

显示的结果如下

文章目录
  1. 1. 简单介绍
  2. 2. 实例