一个数据采集类_PHP教程

php教程评论240 views阅读模式

复制代码 代码如下:

// 兼容 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=" ".$this->value_."

";

echo $tempstr;

}

}

?>

企鹅博客
  • 本文由 发表于 2019年9月30日 21:45:28
  • 转载请务必保留本文链接:https://www.qieseo.com/313736.html

发表评论