fsockopen是php中一个比较实用的函数了,下面我来介绍利用fsockopen函数来采集网页的程序.
 
  用法:int fsockopen(string hostname,int port,int [errno],string [errstr],int [timeout]);
 
  一个采集网页实例,代码如下:
 
  <?php
  function get_url ($url,$cookie=false)
  {
  $url = parse_url($url);
  $query = $url[path].”?”.$url[query];
  echo “Query:”.$query;
  $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
  if (!$fp) {
  return false;
  } else {
  $request = “GET $query HTTP/1.1rn”;
  $request .= “Host: $url[host]rn”;
  $request .= “Connection: Closern”;
  if($cookie) $request.=”Cookie:   $cookien”;
  $request.=”rn”;
  fwrite($fp,$request);
  while(!@feof($fp)) {
  $result .= @fgets($fp, 1024);
  }
  fclose($fp);
  return $result;
  }
  }
  //获取url的html部分,去掉header
  function GetUrlHTML($url,$cookie=false)
  {
  $rowdata = get_url($url,$cookie);
  if($rowdata)//开源代码Cuoxin.com
  {
  $body= stristr($rowdata,”rnrn”);
  $body=substr($body,4,strlen($body));
  return $body;
  }
  
      return false;
  }
  ?>
  被禁用后的解决方法:
 
  服务器同时禁用了fsockopen pfsockopen,那么用其他函数代替,如stream_socket_client(),注意:stream_socket_client()和fsockopen()的参数不同.
 
  fsockopen:替换为 stream_socket_client,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host.
 
  例,代码如下:
 
  $fp = fsockopen($host, 80, $errno, $errstr, 30);
  //或
  $fp = fsockopen($host, $port, $errno, $errstr, $connection_timeout);
  //修改后:
  $fp = stream_socket_client("tcp://".$host."80", $errno, $errstr, 30);
  //或
  $fp = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $connection_timeo

dawei

【声明】:达州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。