Posts Tagged ‘cet’

php写的cet成绩批量查询

一直都关注cnbeta的动态,没想到20号的时候登录尽然有这条新闻:‘“2009年6月CET6成绩于今天2009年8月20号早上9点公布” ,cnbeta现在是嘛新闻都出啊。于是乎就拿出了俺的“证件夹”,掏出了准考证开始查成绩,我对这个网上cet查分的网站的认识和评价基本上和此文一样,这次6级得到437分,感觉还是差不多了,因为还重来没有认认真真的停下来背单词、作题,除了考四级的时候作了一张模拟卷。

cet_band_6_result

这个查询网站通过ajax来查询,需要等待15秒的时间,每次限查询一人成绩,听说08年的时候还要安装activex控件才能查询,对于linux用户就恼火了。通过分析一下http://cet.99sushe.com/这个页面发现没有表单(form),而是这样一句:

<input id="btn" type="button" name="" value="查询" onclick="submit_search();" /></p>

调用了一个js函数submit_search(); 网页引用了一个js文件:http://cet.99sushe.com/res/js/cet0908.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
var testid = "";
var score = "";
var contenthtml = "";
var sec = 15;  //默认等待15秒钟
String.prototype.trim  =  function(){
return  this.replace(/(^\s*)|(\s*$)/g,  ""); //javascrip没有自带trim函数,用来消除空白符
}
function gid(id) {return document.getElementById(id);} //返回表单输入的准考证号的值
function assertFormat(tid){   //检查准考证号格式
    var reg = /^\d{1,}$/;  //regexp 表示全部为数字
    if (!reg.test(tid) || tid.length != 15 || tid.substr(6, 3) != "091" || get_testtype(tid) == "") { //第6位其的三位数不是091的不准查,意思就是只能查09年上半年的成绩,而后用curl发现根本就没有其他几次考试的数据
    alert("准考证号格式不正确");
    return false;
}
else {
    for (var i = 1; i &lt;= 7; i++) {
        if (gid("t" + i).checked) {
            if (tid.substr(9, 1) != gid("t" + i).value) {
                alert("考试类型和准考证号不匹配");
                return false;
        }
    }
}
}
return true;
}
function submit_search() { //提交查询
    var testid_c = gid("id");
    var c = assertFormat(testid_c.value.trim());
    if(!c) {
        testid_c.focus();
        return;
}
testid = testid_c.value.trim();
if (contenthtml == "") contenthtml = gid("content").innerHTML; //得到content的div的innerHTML
//search(testid);
wait(); //等待15秒
}
function wait(){ //等待的时候把waithtml插入到content的div中
    var sec_all = sec;
    var waithtml = "
    <div id="
score_result">
    <div id="
score_inner">";
    waithtml += "
    <div id="
wait_title">系统正在查询中请稍候</div>
    "
;
    waithtml += "
    <div id="
time">" + sec + "</div>
    "
;
    waithtml += "</div>
    </div>
    "
;
    gid("content").innerHTML = waithtml;
    setTimeout("search(" + testid + ")", 0);
    wait_time(sec_all);
}
function wait_time(waitsec){
    if (waitsec > 0) { //15秒没有到
        gid("time").innerHTML = waitsec;
        waitsec--;
        setTimeout("wait_time(" + waitsec + ")", 1000);   //难道这就是传说的中递归调用函数?!
}
    else{
        showscore(score); //时间到了也该显示分数得了
    }
}
function showscore(tscore){
var name = "";
var school = "";
var sarray=new Array();
if(tscore != ""){
    sarray = tscore.split(',');//根据不同的考试类型来给sarray数列赋值
if (sarray.length >= 7) {
    name = sarray[6];
    school = sarray[5];
}
else {
    name = sarray[2];
    school = sarray[1];
}
}
var resulthtml = "
<div id="
score_result">
<h1>2009年6月考试成绩查询结果:</h1>
<div id="
score_inner">";
resulthtml += " <dl> <dt class="dtleft">考生姓名:</dt> <dd class="ddright">"+name+"</dd>";
resulthtml += "

<dt class="
dtleft">学校:</dt> <dd class="ddright">" + school + "</dd>";
resulthtml += "

<dt class="
dtleft">考试类别:</dt> <dd class="ddright">";
resulthtml += get_testtype(testid);
resulthtml += "</dd> <dt></dt> <dd style="overflow: hidden; height: 0px; clear: both;"></dd>";
resulthtml += "

<dt class="
dtleft">准考证号:</dt> <dd class="ddright">";
resulthtml += testid;
resulthtml += "</dd> </dl>
<ul>"
;
if(tscore == "") resulthtml += "<li>无法找到对应准考证号的分数,请确认你输入的准考证号无误</li>";
else {
if (sarray.length >= 7) {
    resulthtml += "
        <li>
    <div class="
lileft">您的成绩总分:</div>
    <div class="
liright" style="font-weight:bold;">" + sarray[4] + "</div></li>
    "
;
    resulthtml += "
        <li>
    <div class="
lileft">听力:</div>
    <div class="
liright">" + sarray[0] + "</div></li>
    "
;
    resulthtml += "
        <li>
    <div class="
lileft">阅读:</div>
    <div class="
liright">" + sarray[1] + "</div></li>
    "
;
    resulthtml += "
        <li>
    <div class="
lileft">综合:</div>
    <div class="
liright">" + sarray[2] + "</div></li>
    "
;
    resulthtml += "
        <li>
    <div class="
lileft">写作:</div>
    <div class="
liright">" + sarray[3] + "</div></li>
    "
;
}
else {
resulthtml += "
    <li>
<div class="
lileft">您的成绩总分:</div>
<div class="
liright" style="font-weight:bold;">" + sarray[0] + "</div></li>
"
;
}
}
resulthtml += "</ul>
<div style="
text-align:center;">姓名中的生僻字可能无法正常显示,以成绩单为准</div>
</div>
"
;
resulthtml += "
<p class="
lang" style="margin-top:-10px;text-align:center;"><input id="btn" onclick="re_search();" type="button" value="返回" /></p>

"
;
resulthtml += "</div>
"
;
gid("content").innerHTML = resulthtml; //通过js写html到dom上,用IE,firefox默认的源代码查看工具都没有发现源代码的变化,但是firefox扩展firebug就能看到,看来还是firebug牛逼。
}
function re_search() { //清空数据
        var testid = "";
        var score = "";
        gid("content").innerHTML = contenthtml;
}

function get_testtype(tid) { //根据考号得到考试类型
    switch (tid.substr(9, 1)) {
        case "1": return "英语四级";
        case "2": return "英语六级";
        case "3": return "日语四级";
        case "4": return "日语六级";
        case "5": return "德语四级";
        case "7": return "俄语四级";
        case "9": return "法语四级";
        default: return "";
    }
}
function search(tid){ //通过ajax post数据"id="+xxxxxxxxxxxxxxx
        var ajax = new Ajax();
        ajax.Post("/getscore.html", "id="+tid, search_callback); //这个就是关键,通过post发送数据到getscore.html来完成查询。
}
function search_callback(success, responsetext) {
    if (success) {
            score = responsetext;
            //showscore(score);
    }
    else {
        search(testid);
    }
}

——————————————-

总结起来就是向getscore.html post一个数据”id=”+xxxxxxxxxxxx

可以通过curl向指定的服务器发送数据包,具体方法此文 “斗智斗勇续 四六级查分技巧 ” 有介绍,需要注意的一点是查询的服务器有referer验证,referer验证一般用来防盗链,防止数据从非本站的提交上去,不过自定义referer并不是什么好难的事情,此为的作者还做了一个c#的gui前端,基本上就是把cmd的输出放在gui界面上,没有多大的意义。这个 “CET在线连续查分程序” 是别人用c#弄的一个在线查询,可以指定准考证号的起始号码和结束号码,就可以连续查询了。

然后我受到这样的启发,做了一个php版本的,演示地址:http://tunpishuang.iamspace.com/cet.php , 和c#那个略有不同的是并不是指定起始和结束地址,而是直接输入前6位,最多输出6000人的成绩,我贴一下源代码:

cet.php —————————————————

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>2009年上半年CET院校成绩批量查询 by tunpishuang</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
#description{
    border:solid 4px 4px 10px 4px #828282;
    color:#8B0000;
    width:420px;
}
#form{
    border:solid 4px #828282;
    color:#8B0000;
    width:520px;
}
</style>
</head>
<body>
<h1>2009年上半年CET院校成绩批量查询 by tunpishuang</h1>
<div id="description">
A.前6位是地区号.(可以问与你同一城市报名的任何一人)<br />
B.然后是071 (表示07年的第1次,即07年6月份的)<br />
C.然后是1或2 (1代表四级,2代表6级)<br />
D.然后的三位是你的考场号,多为0**或1**<br />
E.最后两位是你的座位<br />
</div>
<form method="post" action="cet_query.php">
<div id="form">
单人成绩查询(输入准考证号)<input type="text" name="tid" id="tid" size="15" maxlength="15" /><input type="submit" value="查一查,更健康" /><p></p>
院校成绩查询(输入准考证号前六位)<input type="text" name="cid" id="cid" size="8" maxlength="6" /><input type="submit" value="查一查,更健康" />
</div>
</form>
<div>
<h1>这个查询程序草草完工,有待完善的地方,但是我不想弄了,弄老一天,人都矿鸟<p></p>
有空到我博客来耍哈,<a href="http://techguru.cn">http://techguru.cn</a></h1>
</div>
</body>
</html>

cet_query.php—————————————————-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
echo "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>查询结果</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />
<style type=\"text/css\">
table,td,tr,th{
    border:solid 1px #1E90FF;
    text-align:center;
}
</style>
</head>
<body>
<table cellpadding=\"15\" cellspacing=\"0\" >
<tr>
    <th>听力</th>
    <th>阅读</th>
    <th>综合</th>
    <th>写作</th>
    <th>总分</th>
    <th>学校</th>
    <th>姓名</th>
</tr>
"
;

$data_fmt=array();
function query($id){
    $curl = curl_init();
    $curlpost='id='.$id;
    curl_setopt($curl, CURLOPT_URL, 'http://cet.99sushe.com/getscore.html');
    curl_setopt($curl, CURLOPT_REFERER, 'http://cet.99sushe.com');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POST,1);
    curl_setopt($curl, CURLOPT_POSTFIELDS,$curlpost);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,0);
    $data = curl_exec($curl);
    global $data_fmt;
    $data_fmt=explode(",",$data);
    echo "
<tr>
    <td>$data_fmt[0]</td>
    <td>$data_fmt[1]</td>
    <td>$data_fmt[2]</td>
    <td>$data_fmt[3]</td>
    <td>$data_fmt[4]</td>
    <td>$data_fmt[5]</td>
    <td>$data_fmt[6]</td>
</tr>"

;
    curl_close($curl);
    }

function person_query($tid){
    query($tid);
   
}
function college_query($cid)
{   $cid=$_POST['cid'];
    $cid=sprintf("%.0f",$cid."091200100");
    $j=0;
    $k=0;
    while($k<2){
            while($j<100){
                    for($i=0;$i<30;$i++)
                        {   $cid=sprintf("%.0f",$cid+1);
                            query($cid);
                        }
                    $cid=$cid-30;
                    $cid=$cid+100;
                    $j++;
            }
        $cid=$_POST['cid'];
        $cid=sprintf("%.0f",$cid."091200100");
        $j=0;
        $k++;
       
    }
}
if(($_POST['tid'])!=0){
    $tid=$_POST['tid'];
    person_query($tid);
    }
if(($_POST['cid'])!=0){
    $cid=$_POST['cid'];
    college_query($_POST['cid']);
    }
echo "</table>
</body>
</html>"
;
?>
<!--  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>查询结果</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
table,td,tr,th{
    border:solid 1px #1E90FF;
    text-align:center;
}
</style>
</head>
<body>
<table cellpadding="15" cellspacing="0" >
<tr>
    <th>听力</th>
    <th>阅读</th>
    <th>综合</th>
    <th>写作</th>
    <th>总分</th>
    <th>学校</th>
    <th>姓名</th>
</tr>

<tr>
    <td><?php echo $data_fmt[0]?></td>
    <td><?php echo $data_fmt[1]?></td>
    <td><?php echo $data_fmt[2]?></td>
    <td><?php echo $data_fmt[3]?></td>
    <td><?php echo $data_fmt[4]?></td>
    <td><?php echo $data_fmt[5]?></td>
    <td><?php echo $data_fmt[6]?></td>
</tr>
</table>
</body>
</html>
-->

没有什么好讲的吧,主要是用到了php的libcurl库抓网页。

 

过了个CET-4

cet4_result_hide

有点意外,本来预期是750/2的分数,对于咋们小专科来说很8错了,但是我攀爬顶峰的脚步不会停滞的。下次准备CET-6。

ps:听说我们专业就我一个过了,哎,是悲哀还是意外?

 

Red Hot Chili Peppers – Snow (Hey Oh)

youtube被墙了,看下面的:

因为看了《Death Note 2 – The Last name》,没有想到片尾曲如此的熟悉,搜了一哈,尽然是Red Hot Chili Peppers的Snow,也叫Hey Oh (对此我有两囧,1囧:Band名字好长,2囧:这首歌尽然有两个名字)。
之所以这样惊讶主要是高中的时候听了太多次了,确实耐听,节奏明快,差点在寝室达到High tide。
So,来分享一下高中的特爱。lyrics below:
__________________
come to decide that the things that i tried
were in my life just to get high on

when i sit alone come get a little long
but i need more than myself this time

step from the road to the sea to the sky
and i do believe that we rely on

when i lay it on
come get to play it on
all my life to sacrifice

hey oh listen what i say oh
i got your
hey oh now listen what i say oh

when will i know that i really can’t go
to the well once more time to decide on

when it’s killing me
when will i really see
all that i need to look inside

come to believe that i better not leave
before i get my chance to ride

when it’s killing me
what do i really need
all that i need to look inside

hey oh listen what i say oh
come back and
hey oh look at what i say oh

the more i see the less i know
the more i like to let it go… hey oh… woah woah woah

deep beneath the cover of another perfect wonder
where it’s so white as snow

privately divided by a world so undecided
and there’s nowhere to go

in between the cover of another perfect wonder
and it’s so white as snow

running through the field where all my tracks will be concealed
and there’s nowhere to go

oh

[snow (hey oh) lyrics on http://www.metrolyrics.com]

when to descend to amend for a friend
all the channels that have broken down

now you bring it up
i’m gonna ring it up
just to hear you sing it out

step from the road to the sea to the sky
and i do believe what we rely on

when i lay it on
come get to play it on
all my life to sacrifice

hey oh listen what i say oh
i got your
hey oh listen what i say oh

the more i see the less i know
the more i like to let it go… hey oh
woah woah woah

people need the cover of another perfect wonder
where it’s so white as snow

privately divided by a world so undecided
and there’s nowhere to go

in between the cover of another perfect wonder
where it’s so white as snow

running through the field where all my tracks will be concealed
and there’s nowhere to go.

i said hey hey yeah… oh yeah,
tell my love now
hey yeah yeah oh yeah
tell my love now
deep beneath the cover of another perfect wonder
where it’s so white as snow
finally divided by a world so undecided
and there’s nowhere to go
deep beneath the cover of another perfect wonder
where it’s so white as snow

running through the field where all my tracks will be concealed
and there’s nowhere to go.

i said hey oh yeah… oh yeah,
tell my love now
hey oh yeah oh yeah oh yeah, oh yeah

______________________________歌词来源
同时最近看了一部名为《黑太阳731》的电影,被shock了,得以有此影评
今天考了cet4,Let’s pray to God and Bodhisattva.
另外说说我的收藏歌曲手段,首先听到首好听的歌曲,然后寻找该专辑(一般上VeryCD),如果专辑也符合你的口味,这个时候你可以搜寻该乐团或者歌手的全部专辑,如:

如果某首歌曲过于好听可以下载该MV,硬盘不够下youtube上的,够HD高清.
另外我使用Foobar2000,有foo_unpack插件就不可不用解压RAR直接听。
如果有更好的方法记得拿出来共享哦。
流水账结贴!

 

王长喜2008年四级英语预测试卷(标准测试版—第十二版)四级听力MP3下载

因为俺是小专科的缘故,学校规定专科必选先考三级才能报考四级。你要问我三级是虾米东东,我觉得应该是市教委赚外快的又一手段罢了。

MD,凭啥专科不可以直接考四级?高考成绩低就说明英语单科就不行了吗?啥子垃圾逻辑!Bullshit!

08年下半年,我们赶上了CET考试,终于可以考CET了,听说08.12.20就要开始了,作了王长喜的两张模拟卷,感觉难度一般,我很有信心。我穷,卷子是我同学买的,他没有作,我帮他解决了,哈哈。不过光盘被他磨花了,不过不要怕,俺们Google出了一点下载地址,直接下不行的用迅雷。

顺便BS一下沪江的购买ftp资源的制度。

第一个:

王长喜英语四级预测试卷(第12版听力)_Model_Test_01

王长喜英语四级预测试卷(第12版听力)_Model_Test_02

王长喜英语四级预测试卷(第12版听力)_Model_Test_03

王长喜英语四级预测试卷(第12版听力)_Model_Test_04

王长喜英语四级预测试卷(第12版听力)_Model_Test_05

王长喜英语四级预测试卷(第12版听力)_Model_Test_06

王长喜英语四级预测试卷(第12版听力)_Model_Test_07

王长喜英语四级预测试卷(第12版听力)_Model_Test_08

王长喜英语四级预测试卷(第12版听力)_Model_Test_09

王长喜英语四级预测试卷(第12版听力)_Model_Test_10

;——————

第二个:

http://www.way2english.com/English%20study%20all/way2englishcet4/4%E7%BA%A7%E9%A2%84%E6%B5%8B%E6%A0%87%E5%87%86%E7%89%88%E2%80%94Model%20Test%201.mp3【把红色的1改为1到10,用迅雷批量下载】