本文实例讲述了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程序设计有所帮助。