用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php中fsockopen采集网页内容实例

时间:2015-01-23  来源:西部数据  作者:西部数据

fsockopen是php中一个比较实用的函数了,下面我来介绍利用fsockopen函数来采集网页的程序.

用法:int fsockopen(string hostname,int port,int [errno],string [errstr],int [timeout]);

一个采集网页实例,代码如下:

  1. <?php 
  2. function get_url ($url,$cookie=false) 
  3. $url = parse_url($url); 
  4. $query = $url[path].”?”.$url[query]; 
  5. echo “Query:”.$query
  6. $fp = fsockopen$url[host], $url[port]?$url[port]:80 , $errno$errstr, 30); 
  7. if (!$fp) { 
  8. return false; 
  9. else { 
  10. $request = “GET $query HTTP/1.1rn”; 
  11. $request .= “Host: $url[host]rn”; 
  12. $request .= “Connection: Closern”; 
  13. if($cookie$request.=”Cookie:   $cookien”; 
  14. $request.=”rn”; 
  15. fwrite($fp,$request); 
  16. while(!@feof($fp)) { 
  17. $result .= @fgets($fp, 1024); 
  18. fclose($fp); 
  19. return $result
  20. //获取url的html部分,去掉header 
  21. function GetUrlHTML($url,$cookie=false) 
  22. $rowdata = get_url($url,$cookie); 
  23. if($rowdata)//开源代码phpfensi.com 
  24. $bodystristr($rowdata,”rnrn”); 
  25. $body=substr($body,4,strlen($body)); 
  26. return $body
  27.  
  28.     return false; 
  29. ?> 

被禁用后的解决方法:

服务器同时禁用了fsockopen pfsockopen,那么用其他函数代替,如stream_socket_client(),注意:stream_socket_client()和fsockopen()的参数不同.

fsockopen:替换为 stream_socket_client,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host.

例,代码如下:

  1. $fp = fsockopen($host, 80, $errno$errstr, 30); 
  2. //或 
  3. $fp = fsockopen($host$port$errno$errstr$connection_timeout); 
  4. //修改后: 
  5. $fp = stream_socket_client("tcp://".$host."80"$errno$errstr, 30); 
  6. //或 
  7. $fp = stream_socket_client("tcp://".$host.":".$port$errno$errstr$connection_timeout);
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门