>  기사  >  백엔드 개발  >  PHP 컬은 로그인을 시뮬레이션하고 데이터 인스턴스를 얻습니다.

PHP 컬은 로그인을 시뮬레이션하고 데이터 인스턴스를 얻습니다.

墨辰丷
墨辰丷원래의
2018-05-29 11:14:451510검색

cURL은 강력한 PHP 라이브러리입니다. PHP의 cURL 라이브러리를 사용하면 간단하고 효과적으로 웹 페이지를 크롤링하고 콘텐츠를 수집할 수 있습니다. 컬은 웹 페이지에 대한 로그인을 시뮬레이션하여 PHP에서 더 많은 정보를 얻을 수 있습니다. 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=&#39;portrait&#39;>(.*)<\/td>/i"; 
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;

1. 컬을 초기화합니다.

2.curl_exec를 실행하고

4. 컬 닫기 ;

5. 출력 데이터.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:


노드는 puppeteer

시뮬레이트된 로그인

자세한 크롤링 단계

PHP는 Curl을 사용하여 시뮬레이트된 로그인
및 데이터 크롤링을 위한 세부 단계

를 구현합니다. 퍼프 에티어 시뮬레이트된 로그인
페이지 크롤링을 위한 구현 코드


위 내용은 PHP 컬은 로그인을 시뮬레이션하고 데이터 인스턴스를 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.