php采集中国代理服务器网的方法
本文实例讲述了php采集中国代理服务器网的方法。分享给大家供大家参考。具体如下:
<?php
/**
*采集中国代理服务器网最新列表
*/
classproxy
{
/*需采集列表*/
public$list;
/*代理列表保存路径*/
public$save_path='proxy.txt';
/*获取采集列表*/
functionget_list($page)
{
$url='http://www.cnproxy.com/proxy(*).html';
//处理列表
$this->list=preg_replace('/\(\*\)/',$page,$url);
return$this->list;
}
/*采集代理内容*/
functionget($page)
{
$this->get_list($page);
$file=stripslashes(file_get_contents($this->list));
$zz='/<tr><td>([0-9\.]+)<SCRIPTtype=text\/javascript>document\.write\(":"([\+a-z]+)\)<\/SCRIPT><\/td><td>[\w]+<\/td><td>[\w\,]+<\/td>/is';
preg_match_all($zz,$file,$temp);
unset($temp[0]);
$th=array('z','m','k','l','d','x','i','w','q','b');
$th2=array(3,4,2,9,0,5,7,6,8,1);
foreach($temp[2]as$k=>$v){
$v=preg_replace("/[\+]+/",'',$v);
$s=str_replace($th,$th2,$v);
$re.=$temp[1][$k].':'.$s."\r\n";
}
$this->save($re);
returntrue;
}
/*保存*/
functionsave($re)
{
returnfile_put_contents($this->save_path,$re,FILE_APPEND);
}
/*读取*/
functionread()
{
returnfile_get_contents($this->save_path);
}
}
//初始化采集类
$p=newproxy;
$start=1;
$end=10;
//控制
if($_GET['a']=='start'){
echo'正在发送采集请求';
echo'<metahttp-equiv="Refresh"content="3;URL=?p=1">';
}elseif(isset($_GET['p'])){
$i=$_GET['p']++;
if($i>=$end+1){
exit('<metahttp-equiv="Refresh"content="0;URL=?a=end">');
}else{
echo'正在请求列表'.$i.'>'.$end;
if($p->get($i)){
echo'<metahttp-equiv="Refresh"content="3;URL=?p='.$_GET['p']++.'">';
}
}
}elseif($_GET['a']=='end'){
echo'采集完毕';
}else{
echo'<form>
<inputtype="hidden"name="a"value="start"/>
<inputtype="submit"value="开始采集"/>
</form>';
}
?>
希望本文所述对大家的php程序设计有所帮助。