您的位置:首页 > 编程语言 > PHP开发

跟着百度学PHP[17]-PHP扩展CURL的模拟登陆并获取数据

2017-03-14 13:59 501 查看
这两天也不知道怎么,学习效率低。很无奈。



如何知道要去URL该怎么填写呢?就是填写表单中的Action内容:



tempnam() 函数创建一个具有唯一文件名的临时文件。

<?php
header("content-type:text/html;charset=gbk");
//data可直接抓包查看依据数据来写。
$data = "lgt=0&pwuser=while&pwpwd=xishaonian&hideid=0&forward=&jumpurl=http%3A%2F%2Fbbs.ly.shangdu.com%2Fmessage.php&m=bbs&step=2&cktime=31536000";
$cookie_file = tempnam('./temp','cookie');
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,"http://bbs.ly.shangdu.com/login.php");
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_exec($curl);
curl_close($curl);
//以上就算是登陆完成了,但等下还要将cookie保存。
//此时就需要设置一个读取我们保存在$cookie_file变量中的cookie了。
//使用CURLOPT_COOKIEFILE
$url = curl_init();
curl_setopt($url,CURLOPT_URL,"http://bbs.ly.shangdu.com/u.php?uid=1325511");
curl_setopt($url,CURLOPT_HEADER,0);
curl_setopt($url,CURLOPT_RETURNTRANSFER,1);
curl_setopt($url,CURLOPT_COOKIEFILE,$cookie_file);
$content = curl_exec($url);
//配合正则表达式来提取等级、身份、总积分等信息
$reg = "/[等级|身份|总积分].*?s[2|5].[^>]*>(.[^<]*)/";
preg_match_all($reg,$content,$arr);
var_dump($arr);
echo $arr[1][0] ."<br />";
echo $arr[1][1] ."<br />";
echo $arr[1][2] ."<br />";
curl_close($url);
?>


显示案例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: