php采集中国代理服务器网的方法

5年以前  |  阅读数:416 次  |  编程语言: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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例