이 글은 PHP에서 페이지를 크롤링하는 여러 가지 방법에 대한 자세한 분석 및 소개입니다. 필요한 친구가 참고하면 됩니다.
일부 날씨 예보 또는 RSS 구독 프로그램을 수행할 때 로컬이 아닌 파일을 크롤링해야 하는 경우가 종종 있습니다. 일반적인 상황에서는 PHP를 사용하여 브라우저 액세스를 시뮬레이션하고, HTTP 요청을 통해 URL 주소에 액세스한 다음, 데이터를 직접 추출할 수 없는 경우가 있습니다. 그런 다음 형식을 지정하면 보다 친숙한 접근 방식이 나타납니다.
다음은 PHP 크롤링 페이지의 여러 방법과 원리에 대한 간략한 소개입니다.
1. PHP 크롤링 페이지의 주요 방법:
1. file() 함수
file_get_contents() 함수 3 . fopen()->fread()->fclose() 모드
4.curl 메서드
5. fsockopen() 함수 소켓 모드
6. 플러그인 사용(예: http://sourceforge.net/) projects/snoopy/ )
2. PHP가 html 또는 xml 코드를 구문 분석하는 주요 방법:
1.file() 함수
<?php $url='http://t.qq.com'; $lines_array=file($url); $lines_string=implode('',$lines_array); echo htmlspecialchars($lines_string);
2. 함수
file_get_contents 및 fopen을 사용하여 필요한 공간인 Allow_url_fopen을 엽니다. 방법: php.ini를 편집하고 Allow_url_fopen = On으로 설정하세요.allow_url_fopen이 꺼지면 fopen이나 file_get_contents 모두 원격 파일을 열 수 없습니다.
<?php $url='http://t.qq.com'; $lines_string=file_get_contents($url); echo htmlspecialchars($lines_string);
<?php $url='http://t.qq.com'; $handle=fopen($url,"rb"); $lines_string=""; do{ $data=fread($handle,1024); if(strlen($data)==0) { break; } $lines_string.=$data; }while(true); fclose($handle); echo htmlspecialchars($lines_string);
4. 컬을 열어 컬을 만듭니다. 방법: Windows에서 php.ini를 수정하고 Extension=php_curl.dll 앞의 세미콜론을 제거한 다음 ssleay32.dll 및 libeay32.dll을 C:WINDOWSsystem32에 복사하여 Linux에서 컬 확장을 설치합니다.
코드는 다음과 같습니다.
<?php $url='http://t.qq.com'; $ch=curl_init(); $timeout=5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $lines_string=curl_exec($ch); curl_close($ch); echo htmlspecialchars($lines_string);
5.fsockopen() 함수 소켓 모드
소켓 모드가 올바르게 실행될 수 있는지 여부는 서버 설정과도 관련이 있습니다. phpinfo
를 통해 내 로컬 PHP 소켓에는 http가 활성화되어 있지 않으므로 udp를 통해서만 테스트할 수 있습니다. 코드는 다음과 같습니다.
<?php $fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr); if (!$fp) { echo "ERROR: $errno - $errstr<br />\n" } else { fwrite($fp, "\n") echo fread($fp, 26) fclose($fp) }
6.플러그인
스누피 플러그인은 온라인에서 찾을 수 있습니다.
위 내용은 PHP 크롤링 페이지의 여러 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!