我们知道写爬虫是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加入群聊,欢迎一起研究技术
转载请注明:php实现爬虫如何爬取需要登录页面的内容 出自老鄢博客 | 欢迎分享