PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询
伴随微信的红火,微信公众平台成为许多开发者的下一个目标。笔者本身对于这种新鲜事物没有如此多的吸引力。但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能。于是便在空余时间研究了一番。
主要的实现步骤是,通过PHP的CURL技术模拟登陆目标网站,通过登陆的用户,获取到用户的成绩信息,使用正则表达式对数据进行抓取和存储,使用HTML技术对数据进行重新弄排版。
微信公众平台的功能就是通过浏览的目的来实现成绩查询。整体的技术实现就在于PHP的CURL技术。下面就随便找了一个文件,获取成绩。具体代码如下。
<HTML>
<HEAD><TITLE>请您登录</TITLE>
<script language="JavaScript">
function Judge()
{
var WebUserNO=document.all["WebUserNO"].value;
if(WebUserNO=="")
{alert("登录用户不能为空!");
document.all["WebUserNO"] .focus();
return false;
} }
</script>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px
}
p1 {
FONT-SIZE: 12px
}
INPUT {
FONT-SIZE: 12px
}
p2 {
FONT-SIZE: 12px; LINE-HEIGHT: 14pt
}
p3 {
FONT-SIZE: 14px
}
p4 {
FONT-SIZE: 14px; LINE-HEIGHT: 14pt
}
p5 {
FONT-SIZE: 16px
}
p6 {
FONT-SIZE: 14px; LINE-HEIGHT: 180%
}
p7 {
FONT-SIZE: 12px; COLOR: #136792; LINE-HEIGHT: 160%
}
BIG {
FONT-SIZE: 18px
}
A:link {
COLOR: #0000ff
}
A:visited {
COLOR: #0000ff
}
A:hover {
COLOR: #ff0000
}
hand {
CURSOR: hand; BACKGROUND-COLOR: rgb(208,207,192)
}
</STYLE>
<!--style end-->
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff topMargin=7 marginheight="0" marginwidth="25">
<form name="LoginForm" method="post" action="qing.php">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#e6e6e6 height=20></TD>
<TD align=right bgColor=#e6e6e6> </TD>
</TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=1 width=492 align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE borderColor=#c1eaff cellSpacing=0 cellPadding=20 width=474
align=center border=1>
<TBODY>
<TR>
<TD><TABLE width=283 height="100"
border=0 align=center cellPadding=0 cellSpacing=0>
<tr>
<td width="50" rowspan="4"> </td>
<td align="left">
</td>
</tr>
<tr>
<td height="22" align="left">用户名:
<input name="WebUserNO" type="text" id="WebUserNO" size="12"></td>
</tr>
<tr>
<td height="22" align="left">密  码:
<input name="Password" type="password" id="Password" size="12"></td>
</tr>
<tr>
<td height="22" align="left" valign="middle"><p>附加码:
<input name="Agnomen" type="text" id="Agnomen" size="12">
</p>
<p><A href="User_JSP/FuJiaMa.htm" target="_blank" ><img src="http://218.61.108.163/ACTIONVALIDATERANDOMPICTURE.APPPROCESS" width="60" height="20" alt="验证码说明" border="0"></a></p></td>
</tr>
<tr align="center">
<td colspan="2"><input type="image" border="0" name="submit" src="http://218.61.108.163/User_JSP/images/Logon.gif" width="37" height="18" onClick="javascript:return Judge();"> </td>
</tr>
<tr>
<td colspan="2"><div align="center"><input name="applicant" type="hidden" value="ACTIONQUERYSTUDENTSCORE"></div></td>
</tr>
</TABLE>
<br>
</TD>
</TR>
</TABLE></TD></TR></TBODY></TABLE>
</form>
<BR>
<BR>
</BODY></HTML>
qing.php
<?php
$cookie_file = tempnam('./temp','cookie');
$login_url = 'http://218.61.108.163/ACTIONQUERYSTUDENTSCORE.APPPROCESS'; $post_fields = 'WebUserNO=stuid&Password=passwd&Agnomen=code&applicant=ACTIONQUERYGRADUATESCHOOLREPORTBYSELF'; $ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_exec($ch);
curl_close($ch); $url='http://218.61.108.163/ACTIONQUERYGRADUATESCHOOLREPORTBYSELF.APPPROCESS';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch); //正则表达式提取数据。
$match="|(<=<td>).*(?=</td>)|";
preg_match_all($match,$contents,$b);
$abc = $b[0];
$abs = $b[1];
$abd = $b[1];
echo $abc;
echo $abs;
echo $abd;
curl_close($ch);
?>
获取到成绩的界面

PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询的更多相关文章
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
		这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ... 
- 使用PHP curl模拟浏览器抓取网站信息
		curl是一个利用URL语法在命令行方式下工作的文件传输工具.curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER ... 
- 以正方教务系统为例,用php模拟登陆抓取课表、空教室
		课程格子和超级课程表这两个应用,想必大学生都很熟悉,使用自己的学号和教务系统的密码,就可以将自己的课表导入,随时随地都可以在手机上查看. 其实稍微了解一点php的话,我们也可以做一个类似这样的web ... 
- 在IDM上设置防止过度抓取网站信息
		在使用Internet Download Manager(IDM)下载器时,有时会发现IDM自带的抓取功能过于强大,以至于有时会抓取一些无效的链接.那么,该如何避免IDM的过度抓取呢? 图1:IDM的 ... 
- php curl模拟登陆抓取数据
		http://www.cnblogs.com/zengguowang/p/6814474.html 
- python3下scrapy爬虫(第六卷:利用cookie模拟登陆抓取个人中心页面)
		之前我们爬取的都是那些无需登录就要可以使用的网站但是当我们想爬取自己或他人的个人中心时就需要做登录,一般进入登录页面有两种 ,一个是独立页面登陆,另一个是弹窗,我们先不管验证码登陆的问题 ,现在试一下 ... 
- linux中使用wget模拟爬虫抓取网页
		如何在linux上或者是mac上简单使用爬虫或者是网页下载工具呢,常规的我们肯定是要去下载一个软件下来使用啦,可怜的这两个系统总是找不到相应的工具,这时wget出来帮助你啦!!!wget本身是拿来下载 ... 
- 使用PHP抓取网站ico图标
		网站许久没用更新,以后会经常更新,本次分享一个使用PHP抓取网站ico的程序,提供一个网站列表后对网站的ico进行下载抓取,具体代码如下: <?php /** * 更新热站ico * gao 2 ... 
- .net抓取网页信息 - Jumony框架使用1
		往往在实际开发中,经常会用到一些如抓取网站信息之类的的操作,往往大家采用的是用一些正则的方式获取,但是有时候正则是很死板的,我们常常试想能不能使用jquery的选择器,获取符合自己要求的元素,然后进行 ... 
随机推荐
- 使用JS制作一个鼠标可拖的DIV(四)——缩放
			原理与鼠标拖动 DIV 相同. 下面就先实现一个在DIV的右上角显示一个小正方形(类似). 当鼠标按下并拖动时,DIV会以要拖动的元素的左下角的坐标点定位,根据鼠标的拖动,按比例的扩大或缩小. 一.思 ... 
- Firefox便携版
			安装firefox后默认配置文件在C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox 可以在快捷方式里设置不同的配置文件,但是要注意参数的含义 ... 
- XML 格式转JSON 格式
			#import <Foundation/Foundation.h> #pragma GCC diagnostic push #pragma GCC diagnostic ignored & ... 
- ArcGIS Server 10.2 实战(二)动态修改要素数据的地理处理服务
			上一篇<ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层>介绍了如何用JSON转要素的地理处理服务,实现了动态创建点要素并加载到 ... 
- 给jdk写注释系列之jdk1.6容器(7)-TreeMap源码解析
			TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解. 要了解什么是红黑树,就要了解它的存在主要是为了解决什么问题,对比其他数据结构比如数组,链 ... 
- javaweb学习总结十七(web应用组织结构、web.xml作用以及配置虚拟主机搭建网站)
			一:web应用组织结构 1:web应用组成结构 2:安装web组成机构手动创建一个web应用程序目录 a:在webapps下创建目录web b:在web目录下创建html.jsp.css.js.WEB ... 
- linux命令行操作快捷键
			在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找.这也是快速输入命令的技巧. 在命令终端中可 ... 
- 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法
			今天碰到一个问题,有一张表不能操作,很可能是被锁了,首先想到的是kill session,于是执行了下列的脚本找到是哪个session有问题: select object_name, machine, ... 
- [Yii2]Unable to verify your data submission(你提交的资料无法被验证)
			Yii2中,使用form提交数据,会提示: [yii\web\HttpException:400] exception 'yii\web\BadRequestHttpException' with m ... 
- HttpClient(4.3.5) - HTTP Entity
			HTTP entity HTTP messages can carry a content entity associated with the request or response. Entiti ... 
