当前位置:首页 > PHP教程 > php应用 > 列表

php获取远程网页源码的程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-04 16:37:31 浏览: 评论:0 

有时我们需要做一些采集需要下载远程网页源码到本来了,在这里我们整理了一些php获取远程网页源码代码,希望对各位会有所帮助.

php的curl函数,基本例子,代码如下:

  1. <?php 
  2. // 初始化一个 cURL 对象 
  3. $curl = curl_init(); 
  4. // 设置你需要抓取的URL 
  5. curl_setopt($curl, CURLOPT_URL, 'http://www.phpfensi.com'); 
  6. // 设置header 
  7. curl_setopt($curl, CURLOPT_HEADER, 1); 
  8. // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 
  9. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  10. // 运行cURL,请求网页 
  11. $data = curl_exec($curl); 
  12. // 关闭URL请求 
  13. curl_close($curl); 
  14. // 显示获得的数据 
  15. var_dump($data); 
  16. ?> 

php fopen函数,代码如下:

  1. <?php 
  2. print("<H1>HTTP</H1>n"); 
  3. // open a file using http protocol 
  4. if(!($myFile = fopen("http://www.phpfensi.com/""r"))) 
  5. print("file could not be opened"); 
  6. exit
  7. while(!feof($myFile)) 
  8. // read a line from the file 
  9. $myLine = fgetss($myFile, 255); 
  10. print("$myLine <BR>n"); 
  11. // close the file 
  12. fclose($myFile); 
  13. print("<H1>FTP</H1>n"); 
  14. print("<HR>n"); 
  15. // open a file using ftp protocol 
  16. if(!($myFile = fopen("ftp://ftp.php.net/welcome.msg""r"))) 
  17. print("file could not be opened"); 
  18. exit
  19. while(!feof($myFile))  
  20. // read a line from the file 
  21. $myLine = fgetss($myFile, 255); 
  22. print("$myLine <BR>n"); 
  23. // close the file 
  24. fclose($myFile); 
  25. print("<H1>Local</H1>n"); 
  26. print("<HR>n"); 
  27. // open a local file 
  28. if(!($myFile = fopen("data.txt""r"))) 
  29. print("file could not be opened"); 
  30. exit
  31. while(!feof($myFile)) 
  32. // read a line from the file 
  33. $myLine = fgetss($myFile, 255); 
  34. print("$myLine <BR>n"); 
  35. // close the file 
  36. fclose($myFile); 
  37. ?> 

file_get_contents函数,代码如下:

  1. <?php 
  2. file_get_contents('http://www.phpfensi.com/'); 
  3. ?> 

抓取远程网页源码类,代码如下:

  1. <?php  
  2.  
  3. class HTTPRequest  
  4. {  
  5.     var $_fp;        // HTTP socket  
  6.     var $_url;        // full URL  
  7.     var $_host;        // HTTP host  
  8.     var $_protocol;    // protocol (HTTP/HTTPS)  
  9.     var $_uri;        // request URI  
  10.     var $_port;        // port  
  11.       
  12.     // scan url  
  13.     function _scan_url()  
  14.     {  
  15.         $req = $this->_url;  
  16.           
  17.         $pos = strpos($req'://');  
  18.         $this->_protocol = strtolower(substr($req, 0, $pos));  
  19.           
  20.         $req = substr($req$pos+3);  
  21.         $pos = strpos($req'/');  
  22.         if($pos === false)  
  23.             $pos = strlen($req);  
  24.         $host = substr($req, 0, $pos);  
  25.           
  26.         if(strpos($host':') !== false)  
  27.         {  
  28.             list($this->_host, $this->_port) = explode(':'$host);  
  29.         }  
  30.         else   
  31.         {  
  32.             $this->_host = $host;  
  33.             $this->_port = ($this->_protocol == 'https') ? 443 : 80;  
  34.         }  
  35.           
  36.         $this->_uri = substr($req$pos);  
  37.         if($this->_uri == '')  
  38.             $this->_uri = '/';  
  39.     }  
  40.       
  41.     // constructor  
  42.     function HTTPRequest($url)  
  43.     {  
  44.         $this->_url = $url;  
  45.         $this->_scan_url();  
  46.     }  
  47.       
  48.     // download URL to string  
  49.     function DownloadToString()  
  50.     {  
  51.         $crlf = "rn";  
  52.           
  53.         // generate request  
  54.         $req = 'GET ' . $this->_uri . ' HTTP/1.0' . $crlf  
  55.             .    'Host: ' . $this->_host . $crlf  
  56.             .    $crlf;  
  57.           
  58.         // fetch  
  59.         $this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '') . $this->_host, $this->_port);  
  60.         fwrite($this->_fp, $req);  
  61.         while(is_resource($this->_fp) && $this->_fp && !feof($this->_fp))  
  62.             $response .= fread($this->_fp, 1024);  
  63.         fclose($this->_fp);  
  64.           
  65.         // split header and body  
  66.         $pos = strpos($response$crlf . $crlf);  
  67.         if($pos === false)  
  68.             return($response);  
  69.         $header = substr($response, 0, $pos);  
  70.         $body = substr($response$pos + 2 * strlen($crlf));  
  71.           
  72.         // parse headers  
  73.         $headers = array();  
  74.         $lines = explode($crlf$header);  
  75.         foreach($lines as $line)  
  76.             if(($pos = strpos($line':')) !== false)  
  77.                 $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line$pos+1));  
  78.           
  79.         // redirection?  
  80.         if(isset($headers['location']))  
  81.         {  
  82.             $http = new HTTPRequest($headers['location']);  
  83.             return($http->DownloadToString($http));  
  84.         }  
  85.         else   
  86.         {  
  87.             return($body);  
  88.         }  
  89.     }  
  90. }  
  91. //使用方法  
  92. $r = new HTTPRequest('http://www.phpfensi.com');  
  93. $str=$r->DownloadToString();  
  94.  
  95. ?>

Tags: php获取源码 php网页源码

分享到: