일상적인 개발에서 특정 페이지의 콘텐츠를 가져오는 경우가 종종 있지만 액세스하려면 일부 페이지에 로그인해야 하는 경우가 있습니다. 이때 가장 일반적인 것은 로그인을 시뮬레이션하기 위해 컬을 사용해야 하는 경우입니다. . 일반적인 아이디어: 먼저 쿠키 추출을 요청하고 저장한 다음 저장된 쿠키를 사용하여 다시 요청을 보내 페이지 콘텐츠를 가져와야 합니다. 아래에는
<?php /** * @Brief PHP读取Curl模拟登陆, 获取cookie, 带cookie进行请求 * @Date: 2016/7/2 * @Time: 9:41 */ //设置cookie保存位置 $cookieFile = dirname(__FILE__).'cookie.curl.tmp'; //第一步:获取cookie $url = 'http://www.pythontab.com'; $data = array( 'username' => 'pythontab', 'password' => 'pythontab', ); //curl初始化 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //设置为post请求 curl_setopt($ch, CURLOPT_POST, true); //设置附带返回header信息为空 curl_setopt($ch, CURLOPT_HEADER, 0); //post数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //cookie保存文件位置 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); //设置数据返回作为变量储存,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //执行请求 $ret = curl_exec($ch); //关闭连接 curl_close($ch); //第二步:附带cookie请求需要登陆的页面 $url = 'http://www.pythontab.com'; //curl初始化 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //设置为post请求 curl_setopt($ch, CURLOPT_POST, true); //设置附带返回header信息为空 curl_setopt($ch, CURLOPT_HEADER, 0); //设置cookie信息文件位置, 注意与第二步中的获取不同,这里是读取 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); //设置数据返回作为变量储存,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //执行请求 $ret = curl_exec($ch); //关闭连接 curl_close($ch); //打印抓取内容 var_dump($ret);
코드를 직접 입력합니다. 페이지의 콘텐츠에 액세스하기 위해 로그인해야 하는 정보를 캡처할 수 있습니다. 위의 주소는 단지 예시일 뿐이며 크롤링하려는 페이지의 주소로 바꿔야 합니다. 이런 식으로 우리는 많은 일을 할 수 있지만 나쁜 일은 하지 마세요!