当前位置:  编程技术>php

PHP中使用CURL模拟登录并获取数据实例

    来源: 互联网  发布时间:2014-08-26

    本文导语:  cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国(oschina)为例,和...

cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用。
PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用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_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址,保存的cookie文件,post的数据(用户名和密码等信息),是否返回信息等等,然后curl_exec执行curl,最后curl_close()释放资源。注意PHP自带的http_build_query()可以将数组转换成相连接的字符串。
接下来如果登录成功后,我们要获取登录成功后的页面信息。

代码如下:

//登录成功后获取数据
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_content()中也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中我们设置CURLOPT_RETURNTRANSFER为1即自动返回信息,而CURLOPT_COOKIEFILE可以读取到登录时保存的cookie信息,最后将页面内容返回。

我们的最终目的是要获取到模拟登录后的信息,也就是只有正常登录成功后才能获取的有用信息。接下来我们以登录开源中国的移动版为例,看看如何抓取到登录成功后的信息。

代码如下:

//设置post的数据
$post = array (
    'email' => 'oschina账户',
    'pwd' => 'oschina密码',
    'goto_page' => '/my',
    'error_page' => '/login',
    'save_login' => '1',
    'submit' => '现在登录'
);
 
//登录地址
$url = "http://m./action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_jb51.txt';
//登录后要获取信息的地址
$url2 = "http://m./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、初始化curl;
2、使用curl_setopt设置目标url,和其他选项;
3、curl_exec,执行curl;
4、执行后,关闭curl;
5、输出数据。


    
 
 

您可能感兴趣的文章:

  • php session_id()函数介绍及代码实例
  • php 小数点取法实例总结
  • php生成透明背景图片实例
  • php防止sql注入代码实例
  • php逐字拆分字符串 php字符串拆分实例
  • php解析json数据实例
  • php定界符<<<使用技巧和实例
  • php读取sqlite数据库入门实例
  • PHP文件锁定写入实例解析
  • php读取mysql数据库入门实例
  • php生成excel列序号代码实例
  • PHP三元运算的2种写法代码实例
  • PHP接收二进制流并生成文件(实例)
  • php读取mysql入门实例
  • php根据身份证号码计算年龄的实例代码
  • PHP递归函数返回值使用实例
  • php实例分享之html转为rtf格式
  • php文件锁定写入实例教程
  • PHP创建桌面快捷方式的实例代码
  • php 强制下载文件实例代码
  • php mailto配置实例
  • php获取访客ip地址原理及提供七段代码供参考
  • php获取本机ip地址 php获取远程IP地址
  • PHP获取php、mysql与apache版本
  • PHP获取php,mysql,apche的版本信息示例代码
  • php获取字段名的代码
  • php获取当前时间的毫秒数
  • PHP实现获取图片颜色值的方法
  • php反射机制获取php类的所有方法
  • PHP数组根据值获取Key的简单示例
  • php获取文件大小的二种方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php模拟登录 php curl模拟登录教程大全
  • php模拟qq登录 php模拟登录实例
  • PHP登录跳转到登录前页面的代码
  • php模拟登录获取数据 php curl模拟登录实例详解
  • PHP 登录网关 Secure Gateway
  • 使用Linux/UNIX的系统用户进行PHP用户登录验证
  • php模拟登录保存登录cookie信息的例子
  • PHP 登录完成跳转上一访问页面
  • PHP 登录完成后如何跳转上一访问页面
  • snoopy.class.php中php模拟登录代码解析
  • php curl模拟登录获取cookies
  • php模拟远程登录示例代码
  • php CURL模拟登录正方教务系统的例子
  • PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
  • php curl模拟登录并获取网页内容
  • PHP curl模拟登录带验证码的网站
  • php curl模拟登录带有验证码的网站
  • php获取cookie模拟登录实现方法
  • php curl模拟登录新浪微博的例子
  • PHP登录环节防止sql注入的方法浅析
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3