广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    一个数据采集类

    2018-10-28 11:06:32 次阅读 稿源:互联网
    广告
    代码如下:

    <?
    // 兼容 php4 php5
    // 程序作者  张建 52linux.com(我爱Linux)
    // 联系方法  733905@qq.com  QQ 733905 
    // 简单调用方法
    /*
    <?
    include ("ugs.php"); // 你可以下载本ugs.phps 然后重命名为ugs.php
    $ugs = new ugs();
    $url = "http://domainname.com/path_to_your_target?param";
    $ugs->seturl($url);
    $ugs->gather();
    //............这里可以调用本类里的其它方法,对$ugs->value_  做调整,
    以满足您的要求
    $content=$ugs->getcontent();
    print($content);
    ?>
    */
    class ugs
    {
        var $value_  ;  //'目标内容
        var $src_    ;  //'目标URL地址

        function seturl($url)
        {
            $this->src_=$url;
        }
        function getcontent()
        {
            return $this->value_;
        }
        function getfile($url)
         // 获取目标
        {
            $url_parsed = parse_url($url);
            $host = $url_parsed["host"];
            $port = $url_parsed["port"];
            if ($port==0)  $port = 80;
            $path = $url_parsed["path"];
            if (empty($path))
            $path="/";
            if ($url_parsed["query"] != "")
               $path .= "?".$url_parsed["query"];
            $out = "GET $path HTTP/1.0/r/nHost: $host/r/n/r/n";
            $fp = fsockopen($host, $port, $errno, $errstr, 30);
            fwrite($fp, $out);
            $body = false;
            while (!feof($fp))
            {
              $s = fgets($fp, 1024);
              if ( $body )  $in .= $s;
              if ( $s == "/r/n" )
                   $body = true;
            }
            fclose($fp);
            return $in;
       }

       function getfile_curl($url)
       {
        $curl="/usr/local/bin/curl " ; // path to your curl 
        $curl_options=" -s --connect-timeout 10  --max-time 10  "; 
        // curl 用法请参考 curl --help 或者 man curl 
        // curl 参数非常之丰富,可以模拟各种浏览器(agent) 可以设置referer
        $cmd="$curl $curl_options $url ";
        @exec($cmd,$o,$r);
        if($r!=0) 
        {
            return "超时";
        }
        else
        {
            $o=join("",$o);
            return $o;
        }
       }

        function gather_curl($curl)
        {
            $http=$this->getfile_curl($this->src_);
            return $this->value_=$http;
        }

        function gather_array($url)
         {
            return file($url);
        }

        function   gather()
         // 开始收集
        {
            $http=$this->getfile($this->src_);
            return $this->value_=$http;
        }

        function gather_local($toline=true)
         // 处理本地文件
        {

            if($toline)
            {
                $http=file($this->src_);
                return $this->value_=$this->BytesToBstr($http);
            }
            else
            {
                $http=file($this->src_);
                return $this->value_=$http;
            }



        }

        function noReturn()
         // 删除回车换行
        {
            $this->value_=str_replace("/n","",$this->value_);
            $this->value_=str_replace("/r","",$this->value_);
        }


        function change($oldStr,$str)
        //'对收集到的内容中的个别字符串用新值更换/方法
        //'参数分别是旧字符串,新字符串
        {
            $this->value_=str_replace($oldStr,$str,$this->value_ );
        }



        function cut($start,$end,$no='1',$comprise='')
        //'按指定首尾字符串对收集的内容进行裁减(不包括首尾字符串)方法
        // $no 必须是 1,2 3 ... 不允许是0
        //$comprise 可以选择 start 或者 end 或者 all 或者 什么都不填
        {
            $string=explode($start,$this->value_);
            //print_r($string);
            $string=explode($end,$string[$no]);
            //print_r($string);
            switch ($comprise){
                    case 'start':
                            $string=$start.$string[0];
                    break;
                    case 'end':
                            $string=$string[0].$end;
                    break;
                    case 'all':
                            $string=$start.$string[0].$end;
                    break;
                    default:
                            $string=$string[0];
            }
            return $this->value_=$string;
            }


        function  filt($head,$bot,$str,$no='1',$comprise='')
        //'按指定首尾字符串对收集的内容用新值进行替换(不包括首尾字符串)方法
        // '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
        {
            $tmp_v=$this->value_;
            $tmp=$this->cut($head,$bot,$no,$comprise);
            return $this->value_=str_replace($tmp,$str,$tmp_v);
        }



        function  local()
        {
            //'将收集的内容中的绝对URL地址改为本地相对地址
            // 还没实现
        }



        function  replaceByReg($patrn,$str)
         //'对收集的内容中的符合正则表达式的字符串用新值进行替换/方法
         //'参数是你自定义的正则表达式,新值
        {
            return $this->value_=join("",preg_replace($patrn,$str,$this->value_));
        }



        function debug()
        //调试显示
        {
            $tempstr="<SCRIPT>function runEx(){var winEx2 = window.open(/"/", /"winEx2/", /"width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes/"); winEx2.document.open(/"text/html/", /"replace/"); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open('','','top=10000,left=10000');win.document.write(document.all.asdf.innerText);win.document.execCommand('SaveAs','','javascript.htm');win.close();}</SCRIPT><center><TEXTAREA id=asdf name=textfield rows=32  wrap=VIRTUAL cols=/"120/">".$this->value_."</TEXTAREA><BR><BR><INPUT name=Button onclick=runEx() type=button value=/"查看效果/">  <INPUT name=Button onclick=asdf.select() type=button value=/"全选/">  <INPUT name=Button onclick=/"asdf.value=''/" type=button value=/"清空/">  <INPUT onclick=saveFile(); type=button value=/"保存代码/"></center>";
            echo $tempstr;
        }


    }
    ?>

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告