cURL 이것은 강력한 PHP 라이브러리입니다. PHP의 cURL 라이브러리를 사용하면 간단하고 효과적으로 웹페이지를 크롤링하고 콘텐츠를 수집할 수 있습니다. Curl은 웹페이지 로그인을 시뮬레이션하기 위해 PHP 매뉴얼에서 더 많은 정보를 얻을 수 있습니다. .cURL 정보. 이 문서에서는 cURL 사용을 공유하기 위해 오픈 소스 중국(oschina)에 대한 시뮬레이션된 로그인을 예로 들어 설명합니다.
PHP의 컬()은 웹 페이지 크롤링에 상대적으로 효율적이고 멀티스레딩을 지원하는 반면, file_get_contents()는 약간 덜 효율적입니다. 물론 컬을 사용할 때는 컬 확장을 활성화해야 합니다.
실제 전투 코드
먼저 코드의 로그인 부분을 살펴보겠습니다.
//模拟登录 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() 함수를 먼저 살펴보겠습니다. 컬_init()을 초기화한 후, 컬_setopt()를 사용하여 제출할 URL 주소, 저장된 쿠키 파일, 게시물 데이터(사용자 이름 및 비밀번호 등), 정보 반환 여부 등 관련 옵션 정보를 설정한 후 컬_exec 컬을 실행하고 마지막으로 컬_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() 함수는 컬을 먼저 초기화한 다음 관련 옵션을 설정하고 컬을 실행하며 리소스를 해제합니다. 그 중 CURLOPT_RETURNTRANSFER를 1로 설정하여 자동으로 정보를 반환하고, CURLOPT_COOKIEFILE은 로그인 시 저장된 쿠키 정보를 읽어 최종적으로 페이지 내용을 반환할 수 있습니다.
우리의 궁극적인 목표는 모의 로그인 후 정보를 얻는 것입니다. 이는 일반 로그인이 성공해야만 얻을 수 있는 유용한 정보입니다. 다음으로, 로그인 성공 후 정보를 캡처하는 방법을 알아보기 위해 Open Source China 모바일 버전에 로그인하는 방법을 예로 들어 보겠습니다.
//设置post的数据 $post = array ( 'email' => 'oschina账户', 'pwd' => 'oschina密码', 'goto_page' => '/my', 'error_page' => '/login', 'save_login' => '1', 'submit' => '现在登录' ); //登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录 login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件 @ unlink($cookie); //匹配页面信息 $preg = "/<td class='portrait'>(.*)<\/td>/i"; preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
위 코드를 실행하면 드디어 로그인한 사용자의 아바타 이미지가 얻어지는 것을 볼 수 있습니다.
사용 요약
1. 컬 초기화
2. 대상 URL 및 기타 옵션을 설정합니다.
3. 컬을 실행합니다. 4. 실행 후 컬을 닫습니다. 5. 참고자료"PHP에서 컬과 컬에 대한 소개", 저자 미상, http://www.2cto.com/kf/201208/147091.html " PHP CURL을 사용한 POST 데이터", 작성자: Veda, http://www.nowamagic.net/librarys/veda/detail/124"php는 컬을 사용하여 discuz 로그인을 시뮬레이션하고 게시를 시뮬레이션합니다.", 작성자 : tianxin, http://www.cnblogs.com/tianxin2001x/archive/2009/10/28/1591311.html