php curl méthode d'obtention personnalisée pour explorer les pages Web
Supposons que nous utilisions la méthode get pour demander une page Web, après avoir obtenu le contenu de la page Web, nous pouvons faire correspondre le contenu correspondant.
Nous pouvons utiliser curl pour encapsuler une fonction, en supposant que le nom de la fonction est get. En transmettant l'URL, vous pouvez demander la page Web spécifiée et renvoyer le code HTML de la page Web spécifiée. Le code est le suivant :
function get($url) { //初使化curl $ch = curl_init(); //请求的url,由形参传入 curl_setopt($ch, CURLOPT_URL, $url); //将得到的数据返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不处理头信息 curl_setopt($ch, CURLOPT_HEADER, 0); //连接超过10秒超时 curl_setopt($ch, CURLOPT_TIMEOUT, 10); //执行curl $output = curl_exec($ch); //关闭资源 curl_close($ch); //返回内容 return $output; }
Nous utilisons maintenant la méthode get que nous avons écrite pour demander une liste à NetEase et récupérer le titre et l'url.
Nous pouvons d'abord transmettre une URL en utilisant la méthode get. Récupérez le html de la page web correspondant à cette URL.
L'adresse du site Web est la page de liste d'actualités du New Media Observation Network : http://www.xmtnews.com/events.
Collectez la zone rouge :
1 Obtenez le html de la zone rouge
Cette plage commence par le code HTML suivant :
<section class="ov">
se termine par le code suivant :
<div class="hr-10"></div>
Utilisez preg_match pour écrire une expression régulière et faites-la correspondre pour obtenir HTML rouge pour les plages. Attribuez le code HTML correspondant à la variable $area. L'expression régulière correspondante de
est la suivante :
<section class="ov">(.*?)<div class="hr-10"><\/div>/mis'
2. Faites correspondre le titre et l'URL du titre dans la zone rouge
Nous avons constaté que tous les titres sont dans la balise <h3> Nous utilisons preg_match_all pour écrire une expression régulière.
preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/mis', $area, $find);
Mettez le contenu correspondant à l'URL et au contenu dans $find Imprimez le tableau $find pour voir les résultats correspondants.
Si nécessaire, vous pouvez également lire et afficher le titre de chaque ligne ainsi que l'URL de chaque ligne en boucle.
Toutes les démonstrations de code sont les suivantes :
<?php $content = get('http://www.xmtnews.com/events'); preg_match('/<section class="ov">(.*?)<div class="hr-10"><\/div>/mis', $content, $match); //将正则匹配到的内容赋值给$area $area = $match[1]; preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/', $area, $find); var_dump($find); function get($url) { //初使化curl $ch = curl_init(); //请求的url,由形参传入 curl_setopt($ch, CURLOPT_URL, $url); //将得到的数据返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不处理头信息 curl_setopt($ch, CURLOPT_HEADER, 0); //连接超过10秒超时 curl_setopt($ch, CURLOPT_TIMEOUT, 10); //执行curl $output = curl_exec($ch); //关闭资源 curl_close($ch); //返回内容 return $output; } ?>