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;
}

时间: 2024-11-08 18:53:25

php正则匹配获取指定url网页页面超级链接地址的相关文章

JS使用ajax方法获取指定url的head信息中指定字段值的方法

 这篇文章主要介绍了JS使用ajax方法获取指定url的head信息中指定字段值的方法,实例分析了Ajax操作URL中head信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

JS使用ajax方法获取指定url的head信息中指定字段值的方法_javascript技巧

本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; if (window.XMLHttpRequest) {// code

js截取相应的域名----正则匹配法 和校验Url 正则表达式

  js截取相应的域名----正则匹配法 和校验Url 正则表达式 用javascript截取相应的域名方法两种,供大家参考 1.方法1: [javascript] view plain copy function domainURI(str){ var durl=/http:\/\/([^\/]+)\//i; domain = str.match(durl); return domain[1]; } 调用:var domain=domainURI(document.location.href)

获取指定IP的终端的MAC地址

    因为业务需要,需要给公司部分终端进行登记,以保证授权终端能够登录业务系统,最好的方法就是记录下每台终端的MAC地址来进行验证是否有授权.     下面是采用调用API的方式获取指定IP的终端的MAC地址:   [DllImport("Iphlpapi.dll")]  public static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);  //dest为目标机器的IP;

在C#中如何获取网页的验证码链接地址

问题描述 在C#中如何获取网页的验证码链接地址 在C#中如何获取网页的验证码链接地址,比如我想通过在C#窗体中点击获取验证码按钮,得到网页的验证码. 解决方案 你是指验证码图片还是验证码的字符串? 如果是验证码图片,那么一般验证码的图片都是有个链接的,你先获取到这个链接然后将这个链接拼接到当前地址后面(或者当前地址的上一级). 然后通过WebClient的DownloadFile方法下载验证码图片... 如果你想要获取验证码字符串就必须自己想办法识别了...简单的验证码可以通过调用第三方识别引擎

网页的超级链接-Adobe Flash Professional CS6操作

问题描述 Adobe Flash Professional CS6操作 Adobe Flash Professional CS6里面怎样做网页的超级链接?谢谢大家

PHP获取指定URL页面中的所有链接例子

以下代码可以获取到指定URL页面中的所有链接,即所有a标签的href属性: // 获取链接的HTML代码 $html = file_get_contents('http://www.111cn.net'); $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate('/html/body//a'); for ($i = 0; $i < $

Dreamweaver网页制作超级链接

  超级链接 作为网站肯定有很多的页面,如果页面之间彼此是独立的,那么网页就好比是孤岛,这样的网站是无法运行的.为了建立起网页之间的联系我们必须使用超级链接.称"超级链接",是因为它什么都能链接,如:网页.下载文件.网站地址.邮件地址--等等.下边我们就来讨论怎样在网页中创建超级链接. [页面之间的超级连接] 在网页中,单击了某些图片.有下划线或有明示链接的文字就会跳转到相应的网页中去. 1.在网页中选中要做超级链接的文字或者图片. 2.在属性面板中单击黄色文件夹图标,在弹出的对话框里

几种获取html字符串中所有a链接地址代码

   代码如下 复制代码 $ss = "<a href='1.gif'>d</a>adfxx<a href="dir.html">dir</a>"; print_r(gethref($ss));     function gethref($temp){         preg_match_all('/<a.*?(?: |\t|\r|\n)?href=['"]?(.+?)['"]?(?:(?: