Maison > Article > développement back-end > Maîtriser les principales méthodes d'exploration de pages Web avec PHP
Le processus principal consiste à obtenir la page Web entière, puis à la faire correspondre avec des expressions régulières (critique).
Les principales méthodes d'exploration des pages PHP, il existe plusieurs méthodes basées sur l'expérience des seniors en ligne, mais elles ne sont pas encore utilisées, alors enregistrez-les et essayez-les plus tard.
Fonction 1.file()
Fonction 2.file_get_contents()
3.fopen()->fread()->fclose() mode
Méthode 4.curl (j'utilise principalement ceci)
5.mode socket de fonction fsockopen()
6. /projects/ snoopy/)
Fonction 7.file()
<?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 Utilisez la méthode file_get_contents
pour l'implémenter, ce qui est relativement simple.
L'utilisation de file_get_contents
et fopen doit activer l'espace allow_url_fopen
. Méthode : modifiez php.ini et définissez allow_url_fopen = On
Lorsque allow_url_fopen est désactivé, ni fopen ni file_get_contents
ne peuvent ouvrir les fichiers distants.
$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()
Je ne l'ai pas encore utilisé, je l'ai écrit quand je l'ai vu
<?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. ).
L'utilisation de curl nécessite de l'espace pour activer curl. Méthode : Modifiez php.ini sous Windows, supprimez le point-virgule devant extension=php_curl.dll et copiez ssleay32.dll et libeay32.dll dans C:WINDOWSsystem32 ; installez l'extension curl sous 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()
Mode socket de fonction (je ne l'ai jamais utilisé auparavant, vous pouvez l'essayer à l'avenir)
La question de savoir si le mode socket peut être exécuté correctement est également liée à la paramètres du serveur. Vous pouvez le vérifier via phpinfo Vérifiez quels protocoles de communication sont activés sur le serveur
<?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); }
plug-in 6.snoopy, la dernière version est Snoopy-1.2.4.zip Dernière mise à jour : 2013-05- 30, il est recommandé à tout le monde d'utiliser
Utiliser le très populaire snoopy pour la collecte. Il s'agit d'un plug-in de collecte très puissant, et il est très pratique à utiliser. dedans pour simuler les informations du navigateur.
Remarque : la configuration de l'agent se trouve à la ligne 45 du fichier Snoopy.class.php. Veuillez rechercher "var formula input error_SERVER['HTTP_USER_AGENT']; dans le fichier pour obtenir les informations du navigateur. Copiez simplement le fichier. contenu renvoyé dans l'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;
Apprentissage associé recommandé : tutoriel graphique php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!