您当前的位置: 首页 > 网站编程 > PHP教程 > php正则匹配获取指定url网页页面超级链接地址

php正则匹配获取指定url网页页面超级链接地址

作者:不详 来源:网络 发布时间: 2014-08-18 21:28 点击:
在数据采集与页面分析中,常需要抓取给定url页面的内容,或者第二、第三层次深度页面内容。 这里是一个测试例子的实现,仅供参考。 代码如下: /* 匹配给定页面链接 return:array match[link,content,all] */ function match_links($host, $document) { $pattern = '/a

php正则匹配获取指定url网页页面超级链接地址

  在数据采集与页面分析中,常需要抓取给定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;

  }
分享到:
本文"php正则匹配获取指定url网页页面超级链接地址"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4