>  기사  >  백엔드 개발  >  PHP로 웹페이지를 크롤링하는 방법은 무엇입니까?

PHP로 웹페이지를 크롤링하는 방법은 무엇입니까?

王林
王林원래의
2021-09-02 15:43:146037검색

PHP가 웹페이지를 크롤링하는 방법은 다음과 같습니다. 1. file() 함수 2. file_get_contents() 함수 3. fopen()->fread()->fclose 모드; fsockopen( ) 함수.

PHP로 웹페이지를 크롤링하는 방법은 무엇입니까?

이 기사의 운영 환경: windows10 시스템, PHP 7.1, thinkpad t480 컴퓨터.

개발 작업을 할 때 일반적으로 일부 웹 페이지 파일을 가져와야 합니다. 일반적으로 우리는 PHP를 사용하여 브라우저 액세스를 시뮬레이션하고 http 요청을 통해 URL 주소에 액세스한 다음 html 소스 코드 또는 xml 데이터를 가져옵니다. 그러나 데이터를 얻은 후에는 직접 출력할 수 없습니다. 데이터를 더 친숙한 방식으로 표시하려면 콘텐츠를 추출한 다음 형식을 지정해야 하는 경우가 많습니다.

PHP 크롤링 페이지의 여러 가지 방법과 원리에 대해 간략히 이야기하겠습니다.

1. PHP 크롤링 페이지의 주요 방법:

1. file() 함수

2.fopen() ->fread()->fclose() 모드

4.curl 메소드

5.fsockopen() 함수 소켓 모드

2. PHP가 html 또는 xml 코드를 구문 분석하는 주요 방법:

1. ) function

<?php
//定义url
$url=&#39;http://t.qq.com&#39;;
//fiel函数读取内容数组
$lines_array=file($url);
//拆分数组为字符串
$lines_string=implode(&#39;&#39;,$lines_array);
//输出内容,嘿嘿,大家也可以保存在自己的服务器上
echo $lines_string;

2.file_get_contents() function

allow_url_fopen을 활성화하려면 file_get_contents 및 fopen을 사용하세요. 방법: php.ini를 편집하고 Allow_url_fopen = On으로 설정하십시오.allow_url_fopen이 꺼지면 fopen이나 file_get_contents 모두 원격 파일을 열 수 없습니다.

<?php
//定义url
$url=&#39;http://t.qq.com&#39;;
 //file_get_contents函数远程读取数据
$lines_string=file_get_contents($url);
 //输出内容,嘿嘿,大家也可以保存在自己的服务器上
echo htmlspecialchars($lines_string);

3.fopen()->fread()->fclose() 모드

<?php
//定义url
$url=&#39;http://t.qq.com&#39;;
 //fopen以二进制方式打开
$handle=fopen($url,"rb");
//变量初始化
$lines_string="";
//循环读取数据
do{
    $data=fread($handle,1024);
    if(strlen($data)==0) {
        break;
    }
$lines_string.=$data;
}while(true);
//关闭fopen句柄,释放资源
fclose($handle);
 //输出内容,嘿嘿,大家也可以保存在自己的服务器上
echo $lines_string;

4. Curl 방법

curl을 사용하려면 컬을 열려면 공간이 필요합니다. 방법: Windows에서 php.ini를 수정하고 Extension=php_curl.dll 앞의 세미콜론을 제거한 다음 ssleay32.dll 및 libeay32.dll을 C:WINDOWSsystem32에 복사하여 Linux에서 컬 확장을 설치합니다.

<?php
// 创建一个新cURL资源
$url=&#39;http://t.qq.com&#39;;
$ch=curl_init();
$timeout=5;
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// 抓取URL
$lines_string=curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
//输出内容,嘿嘿,大家也可以保存在自己的服务器上
echo $lines_string;

5.fsockopen() 함수 소켓 모드

소켓 모드가 올바르게 실행될 수 있는지 여부도 서버 설정과 관련이 있습니다. phpinfo를 통해 서버에서 활성화되는 통신 프로토콜을 확인할 수 있습니다.

<?php
$fp = fsockopen("t.qq.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: t.qq.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

PHP 중국어 홈페이지 17기 온라인 수업(

php training

)이 정식 시작되었습니다! PHP 프로그래밍을 좋아하는 친구들, 서둘러서 등록하세요!

위 내용은 PHP로 웹페이지를 크롤링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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