Maison  >  Article  >  développement back-end  >  PHP implémente la collecte du réseau de serveurs proxy chinois

PHP implémente la collecte du réseau de serveurs proxy chinois

墨辰丷
墨辰丷original
2018-06-09 17:01:441827parcourir

Cet article présente principalement la mise en œuvre de la collecte du réseau de serveurs proxy chinois en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

L'exemple de cet article décrit la méthode de collecte du réseau de serveurs proxy chinois en PHP. Les détails sont les suivants :

<?php
/**
 * 采集中国代理服务器网 最新列表
 */
class proxy
{
  /* 需采集列表  */
  public $list;
  /* 代理列表 保存路径 */
  public $save_path = &#39;proxy.txt&#39;;
  /* 获取采集列表 */
  function get_list($page)
  {
    $url = &#39;http://www.cnproxy.com/proxy(*).html&#39;;
    // 处理列表
    $this->list = preg_replace(&#39;/\(\*\)/&#39;, $page, $url);
    return $this->list;
  }
  /* 采集代理内容 */
  function get($page)
  {
    $this->get_list($page);
    $file = stripslashes(file_get_contents($this->list));
    $zz = &#39;/<tr><td>([0-9\.]+)<SCRIPT type=text\/javascript>document\.write\(":"([\+a-z]+)\)<\/SCRIPT><\/td><td>[\w]+<\/td><td>[\w\,]+<\/td>/is&#39;;
    preg_match_all($zz, $file, $temp);
    unset($temp[0]);
    $th = array(&#39;z&#39;, &#39;m&#39;, &#39;k&#39;, &#39;l&#39;, &#39;d&#39;, &#39;x&#39;, &#39;i&#39;, &#39;w&#39;, &#39;q&#39;, &#39;b&#39;);
    $th2 = array(3, 4, 2, 9, 0, 5, 7, 6, 8, 1);
    foreach ($temp[2] as $k=>$v) {
      $v = preg_replace("/[\+]+/", &#39;&#39;, $v);
      $s = str_replace($th, $th2, $v);
      $re .= $temp[1][$k] . &#39;:&#39; . $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[&#39;a&#39;] == &#39;start&#39;) {
  echo &#39;正在发送采集请求&#39;;
  echo &#39;<meta http-equiv="Refresh" content="3;URL=?p=1">&#39;;
} elseif(isset($_GET[&#39;p&#39;])) {
  $i = $_GET[&#39;p&#39;]++;
  if($i >= $end+1) {
    exit(&#39;<meta http-equiv="Refresh" content="0;URL=?a=end">&#39;);
  } else {
    echo &#39;正在请求列表 &#39;. $i .&#39; > &#39;. $end;
    if($p->get($i)) {
      echo &#39;<meta http-equiv="Refresh" content="3;URL=?p=&#39;.$_GET[&#39;p&#39;]++.&#39;">&#39;;
    }
  }
} elseif($_GET[&#39;a&#39;] == &#39;end&#39;) {
  echo &#39;采集完毕&#39;;
} else {
  echo &#39;<form>
      <input type="hidden" name="a" value="start" />
      <input type="submit" value="开始采集" />
     </form>&#39;;
}
?>

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Problèmes liés au mécanisme de récupération de place PHP

php pour les chaînes Traversal et compétences en matière d'opération d'interception

Obtenir des informations hebdomadaires d'un certain mois basées sur PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn