java抓取快递100信息接口

 1 package zeze;
 2 
 3 import java.io.IOException;
 4 
 5 import org.json.JSONArray;
 6 import org.json.JSONException;
 7 import org.json.JSONObject;
 8 import org.jsoup.Connection;
 9 import org.jsoup.Jsoup;
10 import org.jsoup.nodes.Document;
11 import org.jsoup.select.Elements;
12 
13 
14 /**
15  * 
16     * @ClassName: Tiantian 
17     * @Description:  快递100天天快递查询
18     * @author zeze
19     * @date 2015年11月2日 下午2:28:46 
20     *
21  */
22 public class Tiantian {
23 
24     public static void main(String[] args) throws IOException, JSONException {
25         String url = "http://www.kuaidi100.com/query?type=tiantian&postid=666198673845&id=1&valicode=&temp=0.42161923577077687";// 获取地址
26         int num = 0;
27         // 设置查询参数
28         for (int j = 0; j < 1; j++) {
29 
30             Connection conn = Jsoup.connect(url);
31             String key = "666198673845";
32             String b = key.substring(0, 5);
33             String c = key.substring(5, 12);
34 
35             int d = Integer.parseInt(c);
36             key = b + (d + j);// 生成快递单号
37             conn.data("postid", key);// 设置关键字查询字段
38 
39             Document doc = null;
40             doc = conn.timeout(100000).get();// 设置请求类型为post型,超时100000毫秒
41 
42             Elements results = null;
43             System.out.println("天天快递单号:" + key + "    当前查询次数:" + (j + 1));
44             results = doc.select("body");// 处理返回数据
45             String json = results.text();// 获取快递状态信息
46             System.out.println(json);
47             JSONObject obj = new JSONObject(json);  
48             //JSONArray jsonArray=new JSONArray(json);
49             System.out.println("订单号(nu):"+obj.getString("nu"));
50             System.out.println("查询的快递公司代码(com):"+obj.getString("com"));
51             System.out.println("查询结果状态(status):"+obj.getString("status"));
52             System.out.println("快递单当前的状态(state) :"+obj.getString("state"));
53             System.out.println("数据(data):"+obj.getString("data"));
54             
55             JSONArray jsonArray=new JSONArray(obj.getString("data"));
56             for(int i=0;i<jsonArray.length();i++)
57             {
58                 JSONObject jsonObject = jsonArray.getJSONObject(i);//时间
59                 String context = jsonObject.getString("context");
60                 String time = jsonObject.getString("time");
61                 System.out.println(time+" "+context);
62             }
63             
64             
65         }
66         System.out.println("本次成功查询到的订单数为:" + num);
67 
68     }
69 }
View Code

 

 1 package zeze;
 2 
 3 import java.io.IOException;
 4 
 5 import org.json.JSONArray;
 6 import org.json.JSONException;
 7 import org.json.JSONObject;
 8 import org.jsoup.Connection;
 9 import org.jsoup.Jsoup;
10 import org.jsoup.nodes.Document;
11 import org.jsoup.select.Elements;
12 
13 import Dao.MysqlDao;
14 import bean.Info;
15 
16 /**
17  * 
18  * @ClassName: Tiantian
19  * @Description: 快递100天天快递查询
20  * @author zeze
21  * @date 2015年11月2日 下午2:28:46
22  *
23  */
24 public class Tiantian {
25 
26     public static void main(String[] args) throws IOException, JSONException {
27 
28         int num = 0;
29         // 设置查询参数
30         for (int j = 0; j < 200; j++) {
31 
32             String key = "666198673945";
33             String b = key.substring(0, 5);
34             String c = key.substring(5, 12);
35             int d = Integer.parseInt(c);
36             key = b + (d + j);// 生成快递单号
37 
38             String url = "http://www.kuaidi100.com/query?type=tiantian&postid=" + key + "";// 获取地址
39             Connection conn = Jsoup.connect(url);// 连接
40             conn.data("postid", key);// 设置关键字查询字段
41 
42             Document doc = null;
43             doc = conn.timeout(100000).get();// 设置请求类型为post型,超时100000毫秒
44 
45             Elements results = null;
46             results = doc.select("body");// 处理返回数据
47             String json = results.text();// 获取快递状态信息
48 
49             JSONObject obj = new JSONObject(json); // 转为为json对象
50             int statu=Integer.parseInt(obj.getString("status"));
51             if ( statu== 201) {
52                 System.out.println("快递单号:" + key + "    当前查询次数:" + (j + 1));
53                 System.out.println(obj.getString("message"));
54                 continue;
55             }
56             else {
57                 if (obj.getString("nu").isEmpty()) {// 订单号不存在
58                     continue;
59                 }
60                 else {
61                     num++;
62                 }
63                 System.out.println("快递单号(nu):" + obj.getString("nu") + "    当前查询次数:" + (j + 1));
64                 System.out.println("查询的快递公司代码(com):" + obj.getString("com"));
65                 System.out.println("查询结果状态(status):" + obj.getString("status"));
66                 System.out.println("快递单当前的状态(state) :" + obj.getString("state"));
67 
68                 int count = 0;
69                 JSONArray jsonArray = new JSONArray(obj.getString("data"));
70                 for (int i = 0; i < jsonArray.length(); i++) {
71                     JSONObject jsonObject = jsonArray.getJSONObject(i);// 时间
72                     String context = jsonObject.getString("context");
73                     String time = jsonObject.getString("time");
74                     System.out.println(time + " " + context);
75 
76                     Info info = new Info();
77                     info.setVar_id(key);
78                     info.setVar_infoid(count);
79                     info.setVar_time(time);
80                     info.setVar_site(context);
81 
82                     count++;
83                     MysqlDao mysqlDao = new MysqlDao();// 插入数据库
84                     mysqlDao.Addinfo(info);
85                 }
86 
87                 System.out.println("\n/*****************************************/\n");
88             }
89             System.out.println("本次成功查询到的订单数为:" + num);
90         }
91     }
92 }
View Code

 

posted @ 2015-11-02 16:15  陈泽泽  阅读(473)  评论(0编辑  收藏  举报