抓取正方課表 php

2021-07-24 04:07:40 字數 3281 閱讀 2379

///2016/10/28//

//by   xbw///

閒來無事,抓點資料,之前看學弟的python抓取正方特別牛,

查了點資料學習了一下,使用的php。

<?php 

/** * created by phpstorm.

* user: xubowen

* date: 2016/10/27

* time: 下午10:30

*/echo decodeunicode(json_encode(classresult("2014010***xx","********")));

//unicode轉utf-8

function decodeunicode($str)

)/i',

create_function(

'$matches',

'return mb_convert_encoding(pack("h*", $matches[1]), "utf-8", "ucs-2be");'

),$str);

}//獲取隱藏值

function getview()

//獲取cookie

function login($xh,$pwd)

//返回教室查詢頁面的隱藏值

function getviewjs($cookie,$xh)";

$result = curl_request($url,'',$cookie);

$pattern = '//is';

preg_match_all($pattern, $result, $matches);

$res[0] = $matches[1][0];

return $res[0] ;

}function curl_request($url,$post='',$cookie='', $returncookie=0)

if($cookie)

curl_setopt($curl, curlopt_header, $returncookie);

curl_setopt($curl, curlopt_timeout, 20);

curl_setopt($curl, curlopt_returntransfer, 1);

$data = curl_exec($curl);

if (curl_errno($curl))

curl_close($curl);

if($returncookie)else

}//返回課表字串

function classresult($xh,$pwd)

"; $result = curl_request($url, '', $cookie);

preg_match_all('/([\w\w]*?)/', $result, $out);

$table = mb_convert_encoding($out[0][0], "utf-8","gb2312");

preg_match_all('/([\w\w]*?)/', $table, $out);

$td = $out[1];

$length = count($td);

//獲得課程列表

for ($i = 0; $i < $length; $i++) /";

if (!preg_match_all($reg, $td[$i], $matches))

}$td = array_values($td); //將課程列表陣列重新索引

//將課表轉換成陣列形式

function converttotable($table)

}break;}}

$list[$weekarrayday][$weekarrayorder] = $class;

}return $list;

}//呼叫函式

return converttotable($td);

} else

}//空自習室

function roomresult()";

$result = curl_request($url,'',$cookie); //儲存的cookies

$url="";

$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]*?)/',$result,$out);

$table = iconv('gb2312', 'utf-8', $out[0][0]); //獲取查詢列表

$this->load->view("classroom",array('tip'=>$tip,'table'=>$table));

}

主要**由

alonemonkey提供。

效果可以。

php抓取網頁

用php抓取頁面的內容在實際的開發當中是非常有用的,如作乙個簡單的內容採集器,提取網頁中的部分內容等等,抓取到的內容在通過正規表示式做一下過濾就得到了你想要的內容,以下就是幾種常用的用php抓取網頁中的內容的方法。1.file get contents php url contents file g...

PHP 抓取函式

1 php抓取可以採集別人 的資料,前提不違法 2 用過curl,獲取介面的資料 3 php寫的介面,第三方介面 如 天氣介面 或者其他語言寫的。4 我們php想使用這些介面怎麼辦呢?那就需要curl方法,就算你獲取別人的介面 請求別人的網路 就需要用curl這個請求。curl是非常常用的,而且用處...

大學生課表製作 2 抓取課程表資料

beautifulsoup4 是乙個可以從html或xml檔案中提取資料的python庫.它能夠通過我們喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式.安裝 beautiful soup 如果你用的是新版的debain或ubuntu,那麼可以通過系統的軟體包管理來安裝 apt get inst...