php中fsockopen采集网页内容实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-28 10:12:12 浏览: 评论:0
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)//开源代码phpfensi.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_timeout);
Tags: fsockopen采集 php采集网页
- 上一篇:php小偷程序实例代码
- 下一篇:PHP中利用APC模块实现文件上传进度条
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)