zoukankan      html  css  js  c++  java
  • 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("
    /*****************************************/
    ");
    88             }
    89             System.out.println("本次成功查询到的订单数为:" + num);
    90         }
    91     }
    92 }
    View Code
  • 相关阅读:
    hdu 5646 DZY Loves Partition
    bzoj 1001 狼抓兔子 平面图最小割
    poj 1815 Friendship 最小割 拆点 输出字典序
    spoj 1693 Coconuts 最小割 二者取其一式
    hdu 5643 King's Game 约瑟夫环变形
    约瑟夫环问题
    hdu 5642 King's Order
    CodeForces 631C Report
    1039: C语言程序设计教程(第三版)课后习题9.4
    1043: C语言程序设计教程(第三版)课后习题10.1
  • 原文地址:https://www.cnblogs.com/zeze/p/4930473.html
Copyright © 2011-2022 走看看