php抓取网页数据实例( 使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
优采云 发布时间: 2021-09-18 04:19php抓取网页数据实例(
使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
PHP curl模拟登录并获得数据实例的详细说明
更新时间:2016年12月22日08:36:05投稿:Lqh
Curl是一个功能强大的PHP库。使用PHP的curl库,您可以简单有效地抓取网页和采集内容,设置cookies以完成模拟登录网页。Curl提供了丰富的函数。开发人员可以从PHP手册中获得有关curl的更多信息。本文以模拟登录开源中国(oschina)为例。需要它的朋友可以参考它
PHP curl()在捕获web页面方面相对高效,并且支持多线程,而file_uget_uuu内容()的效率稍低。当然,在使用curl时,需要启用curl扩展
规范实践
让我们首先看看登录代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login\upost()首先初始化curl\uinit(),然后curl\usetopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、Post数据(用户名、密码等信息)、是否返回信息等,然后curl\uexec执行curl,最后curl\uclose()释放资源。请注意,PHP随HTTP_uBuild_uQuery()一起提供,它可以将数组转换为串联字符串
接下来,如果登录成功,我们需要在登录成功后获取页面信息
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_u;In content(),首先初始化curl,然后设置相关选项以执行curl并释放资源。如果returntransfer为1,则会自动返回信息,而curlopt_uuuuCookie文件可以读取登录时保存的Cookie信息,最后返回页面内容
我们的最终目标是在模拟登录后获得信息,即只有在正常登录成功后才能获得有用的信息。接下来,让我们以开源中国的移动版为例,看看如何在成功登录后捕获信息
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用摘要
1、initializecurl
2、use curl_uusetopt设置目标URL和其他选项
3、curl_Exec,executecurl
@执行4、后,关闭旋度
5、输出数据
感谢您的阅读,希望能对您有所帮助,感谢您对本网站的支持