100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【php】curl模拟登录抓取页面信息

【php】curl模拟登录抓取页面信息

时间:2020-04-04 15:19:32

相关推荐

【php】curl模拟登录抓取页面信息

【php】curl模拟登录抓取页面信息

在本项目中,使用php抓取四川大学综合教务网站的成绩信息、课程信息以及登录用户的基本资料,解析数据并存入数据库,以实现对所得信息的进一步分析,并呈现给用户。

本文主要记录了使用curl模拟登录,获取cookie1并进行数据抓取的过程。

curl基本特性

模拟浏览器传输数据实现post/get方式传输支持多种协议:HTTP、HTTPS、FTP上传支持cookie,用户名/密码的认证

使用curl完成请求的简单步骤

初始化一个curl句柄

resource curl_init ([ string $url = NULL ] )设置curl选项

bool curl_setopt ( resource $ch , int $option , mixed $value )执行curl请求

mixed curl_exec ( resource $ch )释放curl资源

void curl_close ( resource $ch )

实现步骤详解

1. 初始化curl句柄

初始化新的会话,返回curl句柄,用于接下来的三个步骤:curl_setopt、curl_exec、curl_close。

代码:

//设置请求所需信息$userzjh = "XXXXXX";$usermm = "XXXXXX";$request = "mm=$usermm&zjh=$userzjh";$cookie_jar = tempnam('./tmp','cookie'); //设置cookie文件的保存位置$curl = curl_init(); //初始化,获得curl句柄

2.设置curl选项

使用curl_setopt函数设置curl的相应传输选项。

此函数中包含三个参数:resource $ch , int $option , mixed $value

第一个参数为步骤一中初始化所得的curl句柄,第二个参数所要设置的选项,第三个参数为选项的值。

curl部分选项与可选值对应表如下:

代码:

curl_setopt($curl,CURLOPT_URL,'http://zhjw./loginAction.do'); //要抓取的页面urlcurl_setopt($curl, CURLOPT_POST, 1); //使用post传输数据curl_setopt($curl, CURLOPT_POSTFIELDS, $request); //传递数据curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar); //把返回来的cookie信息保存在$cookie_jar文件中curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设定返回的数据是否自动显示curl_setopt($curl, CURLOPT_HEADER, false); //设定是否显示头信息

3.执行curl请求

设置所需选项的值后,执行请求,并获得返回结果。

$result = curl_exec($curl); //若设置CURLOPT_HEADER为true,此处$result中保存头信息if (curl_errno($curl)) //判断是否执行成功{echo 'Errno'.curl_error($curl);}

4.释放curl资源

curl_close($curl); //关闭会话

1

完整代码

//设置请求所需信息$userzjh = "XXXXXX";$usermm = "XXXXXX";$request = "mm=$usermm&zjh=$userzjh";$cookie_jar = tempnam('./tmp','cookie'); //设置cookie文件的保存位置$curl = curl_init(); //初始化,获得curl句柄curl_setopt($curl,CURLOPT_URL,'http://zhjw./loginAction.do'); //要抓取的页面urlcurl_setopt($curl, CURLOPT_POST, 1); //使用post传输数据curl_setopt($curl, CURLOPT_POSTFIELDS, $request); //传递数据curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar); //把返回来的cookie信息保存在$cookie_jar文件中curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设定返回的数据是否自动显示curl_setopt($curl, CURLOPT_HEADER, false); //设定是否显示头信息$result = curl_exec($curl); //若设置CURLOPT_HEADER为true,此处$result中保存头信息if (curl_errno($curl)) //判断是否执行成功{echo 'Errno'.curl_error($curl);}curl_close($curl); //关闭会话//获取学籍信息$curl4 = curl_init(); //重新建立一个会话$url = 'http://zhjw./xjInfoAction.do?oper=xjxx'; curl_setopt($curl4,CURLOPT_URL,$url);curl_setopt($curl4,CURLOPT_COOKIEFILE,$cookie_jar);curl_setopt($curl4,CURLOPT_RETURNTRANSFER,1);$content = curl_exec($curl4);curl_close($curl4);file_put_contents("./xueji.txt",$content); //将html页面内容保存在文件中,用于后续分析

登录后,可获得从服务器发送来的session ID,这个session ID 包含在之后每次请求的cookie(客户端)中,用于读取服务器端的对应session,辨别用户身份。 ↩

--------------------- 本文来自 cocole2 的CSDN 博客 ,全文地址请点击:/cocole2/article/details/72581110?utm_source=copy

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。