一个数据采集类


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 相关文章推荐
关于文本留言本的分页代码
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
如何在PHP中进行身份认证
Oct 09 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
PHP实现图片批量打包下载功能
Mar 01 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
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
Js四则运算函数代码
2012/07/21 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python检测网站链接是否已存在
2016/04/07 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Tensorflow 实现释放内存
2020/02/03 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
护理实习自我鉴定
2013/12/14 职场文书
集体婚礼证婚词
2014/01/13 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
红色电影观后感
2015/06/18 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
Python实现随机生成迷宫并自动寻路
2021/06/13 Python