• 技术文章 >后端开发 >php教程

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

    2016-07-20 11:16:58原创529
    在数据采集与页面分析中,常需要抓取给定url页面的内容,或者第二、第三层次深度页面内容。

    这里是一个测试例子的实现,仅供参考。

    代码如下:


    /*
    匹配给定页面链接
    return:array match[link,content,all]
    */
    function match_links($host, $document) {
    $pattern = '/(.*?)/i';
    preg_match_all($pattern, $document, $m);
    return $m;

    preg_match_all("']+))[^>]*>?(.*?)'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( "@@is", "", $str );
    $str = preg_replace( "@@is", "", $str );
    $str = preg_replace( "@@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;
    }

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/372096.htmlTechArticle在数据采集与页面分析中,常需要抓取给定url页面的内容,或者第二、第三层次深度页面内容。 这里是一个测试例子的实现,仅供参考。...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 正则 匹配 获取 指定 url 网页 页面 超级链接 地址 数据采集 页面 分析 常需要 需要
    上一篇:web上存漏洞及原理分析、防范方法_PHP教程 下一篇:解析web文件操作常见安全漏洞(目录、文件名检测漏洞_PHP教程
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP缩略图生成程序_PHP教程• 使用PHP和XSLstylesheets转换XML文档_PHP教程• 变量的活动范围_PHP教程• 一个个人网页自动化生成系统3_PHP教程• 简单的页面缓冲技术一_PHP教程
    1/1

    PHP中文网