一个抓取页面的小程序, 查询某个id在北大的做题量

采用file_get_contents获取页面, preg_match进行正则匹配。可以在这里试试(速度可能有点慢, 请耐心等待),在浏览器地址里的id=后面输入你要查询的id,就能够知道你在北大做了多少题目了,如果该用户不存在的话,则返回-1。代码如下:

<?php
$debug=0;
#getURLPattern 给一个正则表达式以及, 一个页面,返回一个指向结果的多维指针
function getURLPattern($Pat,$URL){
	global $debug;
	if($debug>0){
		echo "你请求的页面是" . $URL . "<br/>";
		echo "你给与的正则表达式是" . $Pat . "<br/>";	
	}
	$fp=file_get_contents($URL);
	if($debug>1){
		echo "你请求的页面的返回结果是" . $fp . "<br/>";
	}
	preg_match($Pat,$fp,$out);
	return $out;
}
function getPKUSolvedNum($userID){
	global $debug;
	$Ps="Error Occurred";
	$P='/' . $Ps . '/i';
	$res=getURLPattern($P,"http://poj.org/userstatus?user_id=$userID");
	#$res=getURLPattern($P,"http://localhost/userstatus.html");
	if($debug>0){
		print_r($res);
	}
	if($res[0]==$Ps){
		return -1;
	}
	$P="/(result.*user_id=$userID>)(.*)(<\/a>)/i";
	$res=getURLPattern($P,"http://poj.org/userstatus?user_id=$userID");
	#$res=getURLPattern($P,"http://localhost/userstatus.html");
	if($debug>0){
		print_r($res[2]);
	}
	return $res[2];
}
$user=$_GET['id'];
if($user!=''){
	$pkuNum=getPKUSolvedNum($user);
	$pkuNum=(int)$pkuNum;
	echo $user . "在pku做了" . $pkuNum .  "道题";
}
else{
	echo 'id=?';
}
?> 

一个抓取页面的小程序, 查询某个id在北大的做题量》上有 1 条评论

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>