([\w\W]*?)<\/td>/',$table,$out); $td = $out[1]; $length = count($td); //獲得課程列表 for ($i=0; $i < $length; $i++) { $td[$i] = str_replace(" ", "", $td[$i]); $reg = "/{(.*)}/"; if (!preg_match_all($reg, $td[$i], $matches)) { unset($td[$i]); } } $td = array_values($td); //將課程列表數組重新索引 $tdLength = count($td); for ($i=0; $i < $tdLength; $i++) { $td[$i] = iconv('GB2312','UTF-8',$td[$i]); } //將課錶轉換成數組形式 function converttoTable($table){ $list = array( 'sun' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'mon' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'tues' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'wed' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'thur' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'fri' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'sat' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ) ); $week = array("sun"=>"周日","mon"=>"周一","tues"=>"周二","wed"=>"周三","thur"=>"周四","fri"=>"周五","sat"=>"周六"); $order = array('1,2','3,4','5,6','7,8','9,10'); foreach ($table as $key => $value) { $class = $value; foreach ($week as $key => $weekDay) { $pos = strpos($class,$weekDay); // echo $pos; if ($pos) { $weekArrayDay = $key; //擷取list數組中的第一維key foreach ($order as $key => $orderClass) { $pos = strpos($class,$orderClass); if ($pos) { $weekArrayOrder = $orderClass; //擷取該課程是第幾節 break; } } break; } } $list[$weekArrayDay][$weekArrayOrder] = $class; } return $list; } //調用函數 return converttoTable($td); }else{ return 0; } } 6,再試試查詢空教室的功能
//空教室查詢結果 public function roomresult(){ $xh = ""; //設定學號 $pwd = ""; //學號對應的密碼 $cookie = $this->login($xh,$pwd); $url = "http://jw.hzau.edu.cn/xs_main.aspx?xh={$xh}"; $result = curl_request($url,'',$cookie); //儲存的cookies $url="http://jw.hzau.edu.cn/xxjsjy.aspx?xh={$xh}"; $post['Button2'] = iconv('utf-8', 'gb2312', '空教室查詢'); $post['__EVENTARGUMENT']=''; $post['__EVENTTARGET']=''; $post['__VIEWSTATE'] = $this->getViewJs($cookie,$xh); $post['ddlDsz'] = iconv('utf-8', 'gb2312', '單'); $post['ddlSyXn'] = '2014-2015'; //學年 $post['ddlSyxq'] = '1'; $post['jslb'] = ''; $post['xiaoq'] = ''; $post['kssj']=$_GET['start']; //提交的開始查詢時間 $post['sjd']=$_GET['class'];//提交的課程節次 $post['xn']='2014-2015';//所在學年 $post['xq']='2';//所在學期 $post['xqj']='6';//當天星期幾 $post['dpDataGrid1:txtPageSize']=90;//每頁顯示條數 $result = curl_request($url,$post,$cookie,0); preg_match_all('/]+>[^>]+span>/',$result,$out); $tip = iconv('gb2312', 'utf-8', $out[0][3]);//擷取頁面前部的提示內容 preg_match_all('/([\w\W]*?)<\/table>/',$result,$out); $table = iconv('gb2312', 'utf-8', $out[0][0]); //擷取查詢列表 $this->load->view("classroom",array('tip'=>$tip,'table'=>$table)); } 總結起來就是這些了,每個學校的教務系統都不盡相同,這時我們可以藉助Firefox瀏覽器的 firebug 抓包,看看到底提交了哪些東西。 以上所述就是本文的全部內容了,希望大家能夠喜歡。 http://www.bkjia.com/PHPjc/1001856.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1001856.htmlTechArticlephp實現類比登陸方正教務系統抓取課表,方正課表 課程格子和超級課程表這兩個應用,想必大學生都很熟悉,使用自己的學號和教務系統的... |