本文实例讲述了php采集中国代理服务器网的方法。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?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程序设计有所帮助。