常用的網絡采集器主要分為桌面版和伺服器版:桌面版是基于window等平台,通過本地帶寬來進行資料采集與釋出程式,主要代表有“火車頭網站采集器”和 “editortools”;伺服器版是采用php或asp程式設計,運作于linux或windows主機,通過伺服器帶寬來進行資料采集與釋出程式,主要 代表有“小蜜蜂網站采集器”。兩大類采集器孰優孰劣不言而喻
php采集程式中常用的函數

<?php
//去除html标記
function text2html($txt){
$txt = str_replace(" "," ",$txt);
$txt = str_replace("<","&lt;",$txt);
$txt = str_replace(">","&gt;",$txt);
$txt = preg_replace("/[\r\n]{1,}/isu","<br/>\r\n",$txt);
return $txt;
}
//清除html标記
function clearhtml($str){
$str = str_replace('<','&lt;',$str);
$str = str_replace('>','&gt;',$str);
return $str;
//相對路徑轉化成絕對路徑
function relative_to_absolute($content, $feed_url) {
preg_match('/(http|https|ftp):\/\//', $feed_url, $protocol);
$server_url = preg_replace("/(http|https|ftp|news):\/\//", "", $feed_url);
$server_url = preg_replace("/\/.*/", "", $server_url);
if ($server_url == '') {
return $content;
}
if (isset($protocol[0])) {
$new_content = preg_replace('/href="\//', 'href="'.$protocol[0].$server_url.'/', $content);
$new_content = preg_replace('/src="\//', 'src="'.$protocol[0].$server_url.'/', $new_content);
} else {
$new_content = $content;
return $new_content;
//取得所有連結
function get_all_url($code){
preg_match_all('/<a\s+href=["|\']?([^>"\' ]+)["|\']?\s*[^>]*>([^>]+)<\/a>/i',$code,$arr);
return array('name'=>$arr[2],'url'=>$arr[1]);
//擷取指定标記中的内容
function get_tag_data($str, $start, $end){
if ( $start == '' || $end == '' ){
return;
$str = explode($start, $str);
$str = explode($end, $str[1]);
return $str[0];
//html表格的每行轉為csv格式數組
function get_tr_array($table) {
$table = preg_replace("'<td[^>]*?>'si",'"',$table);
$table = str_replace("</td>",'",',$table);
$table = str_replace("</tr>","{tr}",$table);
//去掉 html 标記
$table = preg_replace("'<[\/\!]*?[^<>]*?>'si","",$table);
//去掉空白字元
$table = preg_replace("'([\r\n])[\s]+'","",$table);
$table = str_replace(" ","",$table);
$table = explode(",{tr}",$table);
array_pop($table);
return $table;
//将html表格的每行每列轉為數組,采集表格資料
function get_td_array($table) {
$table = preg_replace("'<table[^>]*?>'si","",$table);
$table = preg_replace("'<tr[^>]*?>'si","",$table);
$table = preg_replace("'<td[^>]*?>'si","",$table);
$table = str_replace("</td>","{td}",$table);
$table = explode('{tr}', $table);
foreach ($table as $key=>$tr) {
$td = explode('{td}', $tr);
array_pop($td);
$td_array[] = $td;
return $td_array;
//傳回字元串中的所有單詞 $distinct=true 去除重複
function split_en_str($str,$distinct=true) {
preg_match_all('/([a-za-z]+)/',$str,$match);
if ($distinct == true) {
$match[1] = array_unique($match[1]);
sort($match[1]);
return $match[1];