PHP에서 웹페이지 데이터를 크롤링하는 주요 프로세스는 먼저 전체 웹페이지 데이터를 얻은 다음 (중요한) 필수 웹페이지 데이터를 정기적으로 일치시키는 것입니다.
PHP에서 페이지를 읽는 주요 방법. 페이지 데이터를 얻는 방법에 대한 몇 가지 예는 아직 인터넷에서 사용되지 않은 것입니다.
1.file() function
2.file_get_contents() function
3.fopen()->fread()->fclose() mode
4.curl 메소드 (저는 주로 이걸 사용합니다)
5.fsockopen() 함수 소켓 모드
6. 플러그인(예: http://sourceforge.net/projects/snoopy/)
7.file() function
<?php //定义url $url='[http://t.qq.com](http://t.qq.com/)';//fiel函数读取内容数组 $lines_array=file($url);//拆分数组为字符串 $lines_string=implode('',$lines_array);//输出内容 echo $lines_string;
2. 구현할 file_get_contents 메소드는 비교적 간단합니다.
allow_url_fopen을 활성화하려면 file_get_contents 및 fopen을 사용하세요. 방법: php.ini를 편집하고 Allow_url_fopen = On으로 설정하십시오.allow_url_fopen이 꺼지면 fopen이나 file_get_contents 모두 원격 파일을 열 수 없습니다.
$url="[http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml](http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml)"; $html=file_get_contents($url); //如果出现中文乱码使用下面代码` //$getcontent = iconv("gb2312", "utf-8",$html); echo"<textarea style='width:800px;height:600px;'>".$html."</textarea>";
3.fopen()->fread()->fclose() 모드는 아직 써본적이 없어서 적어보겠습니다
<?php //定义url $url='[http://t.qq.com](http://t.qq.com/)';//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을 사용하려면 컬을 활성화할 공간이 필요합니다. 방법: Windows에서 php.ini를 수정하고 Extension=php_curl.dll 앞의 세미콜론을 제거한 다음 ssleay32.dll 및 libeay32.dll을 C:WINDOWSsystem32에 복사하여 Linux에서 컬 확장을 설치합니다.
<?php header("Content-Type: text/html;charset=utf-8"); date_default_timezone_set('PRC'); $url = "https://***********ycare";//要爬取的网址 $res = curl_get_contents($url);//curl封装方法 preg_match_all('/<script>(.*?)<\/script>/',$res,$arr_all);//这个网页中数据通过js包过来,所以直接抓js就可以 preg_match_all('/"id"\:"(.*?)",/',$arr_all[1][1],$arr1);//从js块中匹配要的数据 $list = array_unique($arr1[1]);//(可省)保证不重复 //以下则是同理,循环则可 for($i=0;$i<=6;$i=$i+2){ $detail_url = 'ht*****em/'.$list[$i]; $detail_res = curl_get_contents($detail_url); preg_match_all('/<script>(.*?)<\/script>/',$detail_res,$arr_detail); preg_match('/"desc"\:"(.*?)",/',$arr_detail[1][1],$arr_content); *** *** *** $ret=curl_post('http://**********cms.php',$result);//此脚本未放在服务器上,原因大家懂就好哈。 } function curl_get_contents($url,$cookie='',$referer='',$timeout=300,$ishead=0) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1); curl_setopt($curl, CURLOPT_URL,$url); curl_setopt($curl, CURLOPT_TIMEOUT,$timeout); curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'); if($cookie) { curl_setopt( $curl, CURLOPT_COOKIE,$cookie); } if($referer) { curl_setopt ($curl,CURLOPT_REFERER,$referer); } $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE; if ($ssl) { curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); } $res = curl_exec($curl); return $res; curl_close($curl); } //curl post数据到服务器 function curl_post($url,$data){ $ch = curl_init(); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $output = curl_exec($ch); curl_close($ch); return $output; } ?>
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); }
6.snoopy 플러그인을 통해 서버에서 무엇이 활성화되어 있는지 확인하세요. 최신 버전은 Snoopy-1.2.4.zip입니다. 마지막 업데이트: 2013-05-30, 모두가 사용하는 것이 좋습니다.
인터넷에서 매우 인기 있는 스누피를 사용하여 수집하세요. 이것은 매우 강력한 수집 플러그인이며 사용이 매우 편리하며 여기에 에이전트를 설정하여 브라우저 정보를 시뮬레이션할 수도 있습니다.
참고: 에이전트는 Snoopy.class.php 파일의 45번째 줄에 설정되어 있습니다. 파일에서 "var Formula input error_SERVER['HTTP_USER_AGENT'];를 검색하여 브라우저 정보를 가져오고 내용을 에코하세요. 복사하면 됩니다.
<?php //引入snoopy的类文件 require('Snoopy.class.php'); //初始化snoopy类 $snoopy=new Snoopy; $url="[http://t.qq.com](http://t.qq.com/)"; //开始采集内容` $snoopy->fetch($url); //保存采集内容到$lines_string $lines_string=$snoopy->results; //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo $lines_string;
관련 권장 사항:
php 웹 페이지 분석 콘텐츠 크롤링 크롤러 데이터 분석
위 내용은 PHP를 사용하여 웹페이지를 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!