zoukankan      html  css  js  c++  java
  • PHP中使用CURL模拟登录并获取数据实例

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

    此方式模拟的是form表单的提交,对于模拟ajax表单的提交还没有尝试。

    <?php
    //模拟登录
    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资源,并且释放系统资源
    }
    
    //登录成功后获取数据
    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;
    }
    
    
    //设置post的数据
    $post = array (
        'email' => '帐号',
        'password' => '密码',
        'origURL' => 'http://www.renren.com/home',
        'domain' => 'renren.com',
        'key_id' => '1',
        'captcha_type' => 'web_login',
    );
    
    //登录地址
    $url = "http://www.renren.com/PLogin.do";
    //设置cookie保存路径
    $cookie = dirname(__FILE__) . '/cookie_jb51.txt';
    echo $cookie;
    //登录后要获取信息的地址
    $url2 = "http://zhibo.renren.com/top";
    //模拟登录
    login_post($url, $cookie, $post);
    //获取登录页的信息
    $content = get_content($url2, $cookie);
    //删除cookie文件
    //@ unlink($cookie);
    file_put_contents("./junjun.txt" , $content);
    echo $content;
    //匹配页面信息
    /*$preg = "/<td class='portrait'>(.*)</td>/i";
    preg_match_all($preg, $content, $arr);
    $str = $arr[1][0];
    //输出内容
    echo $str;*/
    
    ?>
  • 相关阅读:
    Netty入门——客户端与服务端通信
    使用配置文件自定义Ribbon配置
    使用Java代码自定义Ribbon配置
    Spring Cloud Ribbon入门
    负载均衡简介
    常见的几种负载均衡算法
    Eureka编程
    Eureka多机高可用
    Maven项目打包成可执行Jar文件
    Eureka单机高可用伪集群配置
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/7646408.html
Copyright © 2011-2022 走看看