找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1139|回复: 0
打印 上一主题 下一主题

一个数据采集类

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 09:25:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            [U]复制代码[/U] 代码如下:
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="".$this->value_."
[I]  [I]  [I]  [I]";
        echo $tempstr;
    }
}
?>
            
            
        
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户反馈
客户端