一个数据采集类


Posted in PHP onFebruary 14, 2007
<? 
// 兼容 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; 
    } 

} 
?>
PHP 相关文章推荐
记录mysql性能查询过程的使用方法
May 02 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
PHP反向代理类代码
Aug 15 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
详细解读php的命名空间(二)
Feb 21 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 #PHP
增加反向链接的101个方法 站长推荐
Jan 31 #PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 #PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 #PHP
获得Google PR值的PHP代码
Jan 28 #PHP
一键删除顽固的空文件夹 软件下载
Jan 26 #PHP
php中通过smtp发邮件的类,测试通过
Jan 22 #PHP
You might like
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
js 文件引入实现代码
2010/04/23 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
python实现自动更换ip的方法
2015/05/05 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
python中有函数重载吗
2020/05/28 Python
用python写爬虫简单吗
2020/07/28 Python
Python发送邮件实现基础解析
2020/08/14 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
公务员转正鉴定材料
2014/02/11 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
营销计划书范文
2015/01/17 职场文书
员工自我评价范文
2015/03/11 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android