cUrl กับการวนเก็บคะแนน วิชา Huge111 ใครคือ 26.5 ใคร คือ 1

หลังจากประกาศผลออกมาตอนเช้า ของวันนี้ ก็ถือว่าเป็นที่หน้าดีใจ สำหรับคนที่ได้คะแนนเยอะ และในทางตรงกันข้ามก็ถือเป็นที่เศร้าสำหรับคนที่คะแนนยังริบรี่ แต่ก็ช่างมันเถอะ เมื่อผ่านมาแล้ว ก็ผ่านไป ไปสู้กันอีกทีตอนปลายภาค แต่ เรื่องมันไม่ได้จบเพียงเท่านั้นเพราะ  Huge111 คนที่ทำวิชานี้ได้เยอะย่อมไม่ใช่มนุษย์แน่นอน(เค้าว่ากันอย่างนั้น) เพราะเนื้อหาวิชาที่สอน ในแต่ละครั้ง เข้าขั้นลึกซึ้ง พาลทำให้คนฟังบรรยายเคลิบเคลิ้มไปตามๆ กัน

แต่ประเด็นมันไม่ได้จบเท่านั้น ความสงสัยมันก็เกิดขึ้น ว่าใครนะใครทีจะเยี่ยมยุทธิ์ ได้คะแนนตั้ง 26.5 เค้าคนนั้นยังเป็นมนุษย์ธรรมดาเหมือนเราหรือใหม่

ระบบเช็คคะแนนของวิชานี้ คือ มีช่องให้กรอกรหัสนักศึกษา แล้วก็จะไปโพล่หน้า ของการแสดงคะแนน ประเด็นก็คือ เราจะสามารถดึง คะแนน ของนักศึกษาปี 1 ทั้ง 510 คนออกมาได้อย่างไร พอโจทย์ที่เราต้องแก้ออกมาแบบนี้ ก็นึกถึง cUrl และ php รวมกึง คลาสดึงข้อมูลหน้าเว็บ อย่างPHP Simple HTML DOM Parser   ขึ้นมาเลยทีเดียวเชียว

ไม่รอช้าอยู่ใย ก็เริ่มเขียนโปรแกรม เพื่อดึงคะแนนกันเลยดีกว่ากันเลยดีกว่า

<?php
include (‘simple_html_dom.php’);

function count_idnumber($idnumber){
$lengh = strlen($idnumber);
if($lengh == 1){
$idnumber = “54011000”.$idnumber;
}
if($lengh == 2){
$idnumber = “5401100”.$idnumber;
}
if($lengh == 3){
$idnumber = “540110”.$idnumber;
}
return $idnumber;
}

function getScore($idGrade){
$url = “http://202.28.248.187/ShowGrade/111/search.php&#8221;;
$userAgent = “Mozilla/4.0 (compatible; MSIE 5.01; Window NT 5.o)”;
$param = “stuID=”.$idGrade;
$ch= curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FLASE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$param);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
$result = curl_exec($ch);
curl_close($ch);
$html = new simple_html_dom();
$html = str_get_html($result);
$printout = $html -> find(‘td’,9);
return $printout;
}

for ($i=1;$i<=50;$i++){
print count_idnumber($i).”,”;
print getScore(count_idnumber($i)).”</br>”;
}

?>

โค้ดที่ได้ ก็จะประมาณ โดยหลักการของโปรแกรมคือ จะแบ่งฟังก์ชั่นของการทำงานออกเป็น 2 ตัวคิอ ฟังก์ชั่นที่ 1 คือ count_idnumber ใช้สำหรับการเรียงเลขรหัสนักศึกษาให้อยุ่ในรูปแบบที่ถูกต้องถือ 540110xxx ส่วนอีกฟังก์ชั่นหนึ่งคือ geScore คือฟังก์ชั่นสำหรับ การดึงคะแนนจากหน้าเว็บประกาศผลของ วิชา huge111 http://www.human.cmu.ac.th/courseonline/course/huge111/

ผลการทำงานออกมาเป็นที่หน้าพอใจ ดึงข้อมูลของนักศึกษาทีละ 50 คน หลังจากนั้นแปลงให้เป็นแบบ .csv แล้วนำไปเปิดดู Ms excel อย่างสบายใจ

จากเท่าที่ดูคนที่ได้คะแนน 26.5 มีอยุ่ 2 คนคือ 540110018 กับ 540110480  ก็ไม่รุ้เหมือนกัน ว่า 2 คนนี้เรียนอยู่ในสาขาวิชาไหน แต่เท่าที่ดูคะแนน ได้ขนาดนี้ก็ถือว่า เมพขิงๆ ละ



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s