php采集中国代理服务器网的方法 |
|
本文标签:php,采集 本文实例讲述了php采集中国代理服务器网的方法 。分享给大家供大家参考 。具体如下:
<?php
/**
* 采集中国代理服务器网 最新列表
*/
class proxy
{
/* 需采集列表 */
public $list;
/* 代理列表 保存路径 */
public $save_path = proxy.txt;
/* 获取采集列表 */
function get_list($page)
{
$url = http://www.cnproxy.com/proxy(*).html;
// 处理列表
$this->list = preg_replace(/\(\*\)/, $page, $url);
return $this->list;
}
/* 采集代理内容 */
function get($page)
{
$this->get_list($page);
$file = stripslashes(file_get_contents($this->list));
$zz = /<tr><td>([0-9\.]+)<SCRIPT type=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);
return true;
}
/* 保存 */
function save($re)
{
return file_put_contents($this->save_path, $re, FILE_APPEND);
}
/* 读取 */
function read()
{
return file_get_contents($this->save_path);
}
}
// 初始化采集类
$p = new proxy;
$start = 1;
$end = 10;
// 控制
if($_GET[a] == start) {
echo 正在发送采集请求;
echo <meta http-equiv="Refresh" content="3;URL=?p=1">;
} elseif(isset($_GET[p])) {
$i = $_GET[p]++;
if($i >= $end+1) {
exit(<meta http-equiv="Refresh" content="0;URL=?a=end">);
} else {
echo 正在请求列表 . $i . > . $end;
if($p->get($i)) {
echo <meta http-equiv="Refresh" content="3;URL=?p=.$_GET[p]++.">;
}
}
} elseif($_GET[a] == end) {
echo 采集完毕;
} else {
echo <form>
<input type="hidden" name="a" value="start" />
<input type="submit" value="开始采集" />
</form>;
}
?>
希望本文所述对大家的php程序设计有所帮助 。 |