国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php正則匹配獲取指定url網頁頁面超級鏈接地址

2024-05-04 21:53:57
字體:
來源:轉載
供稿:網友

 在數據采集與頁面分析中,常需要抓取給定url頁面的內容,或者第二、第三層次深度頁面內容。

這里是一個測試例子的實現,僅供參考。

代碼如下:


/*
匹配給定頁面鏈接
return:array match[link,content,all]
*/
function match_links($host, $document) {
 $pattern = '/<a(.*?)href="(.*?)"(.*?)>(.*?)</a>/i'; 
 preg_match_all($pattern, $document, $m); 
 return $m;

 preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1)(.*?)/1|([^s>]+))[^>]*>?(.*?)</a>'isx",$document,$links);
 while(list($key,$val) = each($links[2])) {
  if(!empty($val))
   if(preg_match("/http/",$val)){
    $match['link'][] = $val;
   }
   else {
    $match['link'][] = $host . $val;
   }
 }
 while(list($key,$val) = each($links[3])) {
  if(!empty($val))
   if(preg_match("/http/",$val)){
    $match['link'][] = $val;
   }
   else {
    $match['link'][] = $host . $val;
   }
 }
 while(list($key,$val) = each($links[4])) {
  if(!empty($val))
   $match['content'][] = $val;
 }
 while(list($key,$val) = each($links[0])) {
  if(!empty($val))
   $match['all'][] = $val;
 }
 return $match['link'];
}

/*
從給定url中獲取頁面文本內容
*/
function get_content_from_url($url) {
 $str = @file_get_contents($url);
 if(mb_check_encoding($str, "GBK"))
  $str = iconv("GBK","UTF-8", $str);
 $str = strip_tags($str); // 過濾html標簽
/* 
 $str = preg_replace( "@<script(.*?)</script>@is", "", $str );
 $str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str );
 $str = preg_replace( "@<style(.*?)</style>@is", "", $str );
 $str = preg_replace( "@<(.*?)>@is", "", $str );
*/
 //過濾非漢字字符
 preg_match_all('/[x{4e00}-x{9fff}]+/u', $str, $matches);
 $str = join(',', $matches[0]);
 if(!$str)
  return NULL;
 
 return $str;
}

function get_content($url,$depth) {
 if(!$url || $depth < 1)
  return false;

 while($depth > 1){
  $str = @file_get_contents($url);
  if(!$str)
   return false;

  $parseurl = parse_url($url); 
  if($parseurl['host'])
   $host = $parseurl[scheme] . "://" . $parseurl['host'];
  
  $arrlink = match_links($host,$str);
  $arr_url = array_unique($arrlink);

  $depth--;
  foreach($arr_url as $url){
   $content .= get_content($url, $depth); //遞歸調用
  }
 }

 $content .= get_content_from_url($url);
  
 return $content;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿勒泰市| 松阳县| 临武县| 涞水县| 平湖市| 龙海市| 桐柏县| 长春市| 新蔡县| 曲水县| 永泰县| 富顺县| 新丰县| 雷山县| 淮阳县| 沙坪坝区| 辽源市| 格尔木市| 尼勒克县| 二手房| 丰顺县| 蓬安县| 金阳县| 东乡| 曲靖市| 五莲县| 辽阳市| 民丰县| 临武县| 淮安市| 巴中市| 库车县| 拉孜县| 成安县| 当阳市| 泸州市| 原平市| 大英县| 绥化市| 台东县| 山东|