資料收集,又稱資料獲取,是利用一種裝置,從系統外部採集資料並輸入到系統內部的一個介面。數據採集技術廣泛應用在各個領域。例如攝影機,麥克風,都是資料擷取工具。
被採集資料是各種已轉換為電訊號的實體量,如溫度、水位、風速、壓力等,可以是類比量,也可以是數位量。採集一般是採樣方式,即隔一定時間(稱為採樣週期)對同一點資料重複採集。採集的資料大多是瞬時值,也可是某段時間的一個特徵值。準確的數據測量是數據採集的基礎。資料量測方法有接觸式和非接觸式,檢測元件多種多樣。不論哪一種方法和元件,均以不影響被測對象狀態和測量環境為前提,以確保資料的正確性。資料採集意義很廣,包括對面狀連續物理量的採集。在電腦輔助製圖、測圖、設計中,對圖形或影像數位化過程也可稱為資料擷取,此時被收集的是幾何量(或包含物理量,如灰階)資料。
在網路產業快速發展的今天,資料收集已被廣泛應用於網路及分散式領域,資料擷取領域已經發生了重要的變化。首先,分散式控制應用場合中的智慧資料採集系統在國內外已經取得了長足的發展。其次,匯流排相容型資料擷取插件的數量不斷增加,與個人電腦相容的資料擷取系統的數量也在增加。國內外各種數據採集機先後問世,將數據採集帶入了一個全新的時代。
以下是一個資料擷取類別
<? // 兼容 php4 php5 // 简单调用方法 /* <? 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 一個資料擷取類別實例代碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!