zoukankan      html  css  js  c++  java
  • 微信公众平台开发(94) 违章查询

    在微信公众平台开发违章查询是一件比较辛苦的事,因为违章查询的数据在各省市公安部门的服务器上,对外只有网页查询提供,所以只有去分析网页,然后通过模拟提交来实现。

    黑龙江违章查询地址为 http://www.hljjj.gov.cn:8081/Home/Wfcx

    实际查询时,抓取到的请求如下

    通过查看网页源码得到验证:

     1 <script type="text/javascript">
     2     function error() {
     3         showDialog(false);
     4         alert("数据库繁忙,请稍后重试!");
     5     }
     6     function beforesend() {
     7         showDialog(true);
     8     }
     9     /** --------- AJAX ------------ */
    10     function queryajax() {
    11         var ajaxRequest = new AjaxRequest();
    12         ajaxRequest.setUrl("/Home/getWfcx"); //请求之前
    13         ajaxRequest.setDataType("json");
    14         ajaxRequest.setUsePOST(); //post方式
    15         ajaxRequest.setBeforeSend(beforesend); //请求之前
    16         ajaxRequest.setSuccess(querysuccess); //请求成功
    17         ajaxRequest.setError(error); //请求失败
    18         var queryString = "";
    19         var hpzl = $("#hpzl").val();
    20         var dy = $("#dy").val();
    21         var xzqh = $("#xzqh").val();
    22         var hphm = $("#hphm").val();
    23         var clsbdh = $("#clsbdh").val();
    24         var jkbj = $("input[name='jkbj'][checked]").val();
    25         var yzm = $("#yzm").val();
    26         queryString = "hpzl=" + hpzl + "&dy=" + dy + "&xzqh=" + xzqh + "&hphm=" + hphm + "&clsbdh=" + clsbdh + "&jkbj=" + jkbj;
    27         ajaxRequest.setQueryString(queryString);
    28         ajaxRequest.sendRequest();
    29     }
    30 
    31     function querysuccess(json) {
    32         var json_data = json;
    33         showDialog(false);
    34         if (json_data[0] == "0") {
    35             $('#comments').empty();
    36             $('#comments').append(json_data[2]);
    37         } else {
    38             $('#comments').empty();
    39             alert(json_data[1]);
    40         }
    41         img();
    42     }
    43     function img() {
    44         $('#imgDefault').attr('src', '/Home/Yzm?time=' + (new Date().getTime()));
    45     }
    46     $(document).ready(function () {
    47         img();
    48     });
    49 </script>

    可以看到,实际查询路径为 /Home/getWfcx,也就是说,真实的查询地址为

    http://www.hljjj.gov.cn:8081/Home/getWfcx

    查询请求为 

    hpzl=02&dy=黑&xzqh=A&hphm=EZ352&clsbdh=LGBF1DE099R156742&jkbj=0&ts=1396242672751

    返回的内容如下:

    <table width="100%"  border="0" cellspacing="1" cellpadding="0" class="list_table" align="center"><tr height='20px' class="list_head"><td width='6%'>号牌号码</td><td width='6%'>号牌种类</td><td width='10%'>违法时间</td><td width='5%'>金额</td><td width='3%'>记分</td><td width='5%'>缴款状态</td><td width='5%'>处理状态</td><td width='18%'>违法地点</td><td width='15%'>违法内容</td><td width='12%'>决定书编号</td><td width='15%'>采集机关</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-12-30 15:14:00</td><td>100</td><td>3</td><td>未缴款</td><td>未处理</td><td>国道绥满公路578公里</td><td>驾驶中型以上载客载货汽车、危险物品运输车辆以外的其他机动车行驶超过规定时速未达20%的</td><td></td><td>黑龙江省绥化市肇东市交警大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-7-16 14:37:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>比优特旗舰店</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-7-15 18:42:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>比优特旗舰店</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-26 9:41:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>防疫站</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-17 12:40:00</td><td>100</td><td>3</td><td>未缴款</td><td>未处理</td><td>哈尔滨市-铁路街全路段</td><td>违反禁止标线指示</td><td></td><td>巡逻大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-7 10:44:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>市农行道口</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-5-26 18:37:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>老交通局</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-5-14 9:13:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>老交通局</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr></table>

    其返回的结果不是一个标准的json,而是一个网页格式,所以还需要html解析处理,

    而对于请求发送,直接构造字符串用curl进行POST提交

    实现代码如下:

     1 function getTrafficInfo($longnumber)
     2 {
     3     if (!preg_match("/^违章#黑[A-Ra-r]w{5}#w{17}$/",$longnumber)){        //城市简拼
     4         return "查询格式错误!
    请发送'违章#车牌号码#机动车识别代号'
    例如'违章#黑AEZ352#LGBF1DE099R156742'";
     5     }
     6     
     7     $headers = array(
     8         "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1",
     9         "Accept: application/json, text/javascript, */*",
    10         "Accept-Language: en-US,en;q=0.8",
    11         "Referer: http://www.hljjj.gov.cn:8081/Home/Wfcx",
    12         "X-Requested-With: XMLHttpRequest",
    13         "Content-Type: application/x-www-form-urlencoded",
    14     );
    15 
    16     $numberarray = explode ("#", $longnumber);
    17     $provinceCode = substr($numberarray[1], 0, 3);
    18     $cityCode = substr($numberarray[1], 3, 1);
    19     $plateNumber = substr($numberarray[1], 4, strlen($numberarray[1]) - 4);
    20     $vehicleNumber = $numberarray[2];
    21     $curTime = explode (" ", microtime());
    22     $curMicroTime = round($curTime[1].($curTime[0]*1000));
    23 
    24     $post2 = "hpzl=02&dy=黑&xzqh=$cityCode&hphm=$plateNumber&clsbdh=$vehicleNumber&jkbj=0&ts=$curMicroTime";
    25     
    26     $ch = curl_init();
    27     curl_setopt($ch, CURLOPT_URL, "http://www.hljjj.gov.cn:8081/Home/getWfcx");
    28     curl_setopt($ch, CURLOPT_HEADER, false);
    29     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    30     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    31     curl_setopt($ch, CURLOPT_POSTFIELDS, $post2);
    32     $content=curl_exec($ch);
    33     curl_close($ch);
    34     $output = json_decode($content, true);
    35 
    36     if($output[0] != "0"){
    37         return "【错误】类型:".$output[0].", 原因:".$output[1];
    38     }else{
    39         $str = $output[2];
    40         include('simple_html_dom.php');
    41         $html = str_get_html($str);
    42         $result = "";
    43         $titleArray = array("号码", "种类", "时间", "金额", "记分", "缴款", "处理", "地点", "内容", "编号", "机关");
    44         foreach($html->find('table tr') as $tr){
    45             if ($tr->find('td', 0)->innertext == "号牌号码"){
    46                 continue;
    47             }
    48             for ($i = 2; $i <= 10; $i++) {
    49                 $result .= $titleArray[$i].":".$tr->find('td', $i)->innertext."
    ";
    50             }
    51             $result .= "
    ";
    52             if (strlen($result) > 2000){break;}
    53         }
    54         return trim($result);
    55     }
    56 }

    ====================================================================

    方倍工作室微信公众平台账号关注方法:
    1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
    2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
    3. 使用微信扫描下面的二维码

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/txw1958/p/weixin-peccancy-inquiry.html
Copyright © 2011-2022 走看看