当前位置:Gxlcms > PHP教程 > 一个数据采集类_PHP

一个数据采集类_PHP

时间:2021-07-01 10:21:17 帮助过:6人阅读

采集

// 兼容 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="


"
;
echo
$tempstr
;
}


}
?>

人气教程排行