php实现爬虫如何爬取需要登录页面的内容

发布时间:2021-12-24 14:56:29 阅读:1174次

我们知道写爬虫是python的强项

但是我只想写一个简单的爬虫,这时候php也可以用上

平时自己写就用file_get_contents配合正则表达式来实现

那如果一个页面需要登录,那么我们该如何爬取其内容呢?

我们需要先模拟登录,然后生成cookie,接着再爬取的页面中加上这个cookie即可

以下为实现方法

[root@iZuf69ienyt0y9k57inp6gZ controller]# cat Get.php
<?php
namespace app\index\controller;

use think\facade\Session;
use think\facade\Cookie;

class Get extends Common
{
    function setcookie() #获取保存COOKIE
    {
        $cookie = "/tmp/cookie.txt";#cookie保存文件地址
        $data['user'] = 'test';
        $data['pwd'] = '123456';
        $requesturl = 'http://www.test.com.cn/index/get/login';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $requesturl);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));//要提交的信息
        curl_exec($ch);
        curl_close($ch);
    }
    function getinfo()#携带COOKIE请求获取登陆后的内容
    {
        $cookie = "/tmp/cookie.txt";
        $ch = curl_init();
        $requesturl = 'http://www.test.com.cn/index/get/info';
        curl_setopt($ch, CURLOPT_URL, $requesturl);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //使用上面获取的cookies
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $data=curl_exec($ch);
        print_r($data);
        curl_close($ch);
    }

    public function login(){
        $user = Input('user');
        $pwd = Input('pwd');
        if($user == 'test' && $pwd == '123456'){
            Cookie::set("loginToken",1,3600);
        }else{
            echo "no right";
        }
    }
    public function info(){
        if(Cookie::get("loginToken") == 1){
            echo "ok";
        }else{
            echo "no right";
        }
    }
}

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:php实现爬虫如何爬取需要登录页面的内容 出自老鄢博客 | 欢迎分享