Comment explorer des pages Web en utilisant PHP

不言
Libérer: 2023-04-03 08:58:01
original
6694 Les gens l'ont consulté

Le processus principal d'exploration des données d'une page Web en PHP consiste d'abord à obtenir l'intégralité des données de la page Web, puis à faire correspondre régulièrement les données (critiques) requises de la page Web.

La principale méthode de lecture des pages en PHP. Il existe plusieurs méthodes pour obtenir des données de page. Les exemples sont basés sur l'expérience de personnes expérimentées sur Internet. Elles n'ont pas encore été utilisées. 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=&#39;[http://t.qq.com](http://t.qq.com/)&#39;;//fiel函数读取内容数组
$lines_array=file($url);//拆分数组为字符串
$lines_string=implode(&#39;&#39;,$lines_array);//输出内容
echo $lines_string; 
Copier après la connexion

2 Utilisez la méthode file_get_contents pour implémenter, qui est relativement simple.

Utilisez file_get_contents et fopen pour activer 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=&#39;width:800px;height:600px;&#39;>".$html."</textarea>";
Copier après la connexion

Mode 3.fopen()->fread()->fclose() Je ne l'ai pas encore utilisé, je vais l'écrire. quand je le vois.

<?php
//定义url
$url=&#39;[http://t.qq.com](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;
Copier après la connexion

4. Utilisez curl pour implémenter (j'utilise habituellement ceci).

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(&#39;PRC&#39;);
$url = "https://***********ycare";//要爬取的网址
$res = curl_get_contents($url);//curl封装方法
preg_match_all(&#39;/<script>(.*?)<\/script>/&#39;,$res,$arr_all);//这个网页中数据通过js包过来,所以直接抓js就可以
preg_match_all(&#39;/"id"\:"(.*?)",/&#39;,$arr_all[1][1],$arr1);//从js块中匹配要的数据
$list = array_unique($arr1[1]);//(可省)保证不重复
//以下则是同理,循环则可
for($i=0;$i<=6;$i=$i+2){
  $detail_url = &#39;ht*****em/&#39;.$list[$i];
  $detail_res = curl_get_contents($detail_url);
  preg_match_all(&#39;/<script>(.*?)<\/script>/&#39;,$detail_res,$arr_detail);
  preg_match(&#39;/"desc"\:"(.*?)",/&#39;,$arr_detail[1][1],$arr_content);
  ***
    ***
    ***
  $ret=curl_post(&#39;http://**********cms.php&#39;,$result);//此脚本未放在服务器上,原因大家懂就好哈。
}
function curl_get_contents($url,$cookie=&#39;&#39;,$referer=&#39;&#39;,$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,&#39;Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&#39;);
  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,&#39;Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36&#39;);
  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; 
}
?>
Copier après la connexion

5.fsockopen() fonction mode socket (jamais utilisé, vous pourrez l'essayer à l'avenir)

Si le mode socket peut être exécuté correctement, cela a également quelque chose à voir avec les paramètres du serveur. Vous pouvez vérifier quels protocoles de communication sont activés sur le serveur via phpinfo zip Dernière mise à jour : 2013-05-30, il est recommandé d'utiliser

. pour utiliser Snoopy, qui est très populaire sur Internet, pour la collecte. Il s'agit d'un plug-in de collecte très puissant, et il est très pratique à utiliser. Vous pouvez également configurer un agent pour simuler les informations du navigateur.

<?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);
}
Copier après la connexion

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

Recommandations associées :

<?php
//引入snoopy的类文件
require(&#39;Snoopy.class.php&#39;);
//初始化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;
Copier après la connexion
Exploration Web : robot d'exploration Web PHP Résumé des méthodes, robot d'exploration

.

analyse de page Web php analyse de données de robot de contenu

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal