一个数据采集类_PHP
Lepaskan: 2016-06-01 12:25:48
asal
777 orang telah melayarinya
采集
// 兼容 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>
"
; echo $tempstr ; } } ?>
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
2024-10-22 09:46:29
2024-10-13 13:53:41
2024-10-12 12:15:51
2024-10-11 22:47:31
2024-10-11 19:36:51
2024-10-11 15:50:41
2024-10-11 15:07:41
2024-10-11 14:21:21
2024-10-11 12:59:11
2024-10-11 12:17:31
Topik-topik yang berkaitan
Lagi>