PHP擷取網頁內容的幾種方法代碼分享

來源:互聯網
上載者:User
PHP擷取網頁內容的幾種方法代碼分享

方法1: 用file_get_contents 以get方式擷取內容




方法2:用file_get_contents函數,以post方式擷取url

 'bar');$data = http_build_query($data);$opts = array ('http' => array (  'method' => 'POST',  'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .                    "Content-Length: " . strlen($data) . "\r\n",  'content' => $data));$ctx = stream_context_create($opts);$html = @file_get_contents($url,'',$ctx);



如果需要再傳遞cookie資料,則把

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .                 "Content-Length: " . strlen($data) . "\r\n",


修改為

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .                "Content-Length: " . strlen($data) . "\r\n".                "cookie:cookie1=c1;cookie2=c2\r\n" ;


即可

方法3: 用fopen開啟url, 以get方式擷取內容

":echo "url body: $result";fclose($fp);?>



方法4: 用fopen開啟url, 以post方式擷取內容

 'bar2','foo3'=>'bar3');$data = http_build_query($data);$opts = array ('http' => array ('method' => 'POST','header'=> "Content-type: application/x-www-form-urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n" ."Content-Length: " . strlen($data) . "\r\n",'content' => $data));$context = stream_context_create($opts);$html = fopen('http://www.test.com/zzzz.php?id=i3&id2=i4','rb' ,false, $context);$w=fread($html,1024);echo $w;?>



方法5:用fsockopen函數開啟url,以get方式擷取完整的資料,包括header和body




方法6:用fsockopen函數開啟url,以POST方式擷取完整的資料,包括header和body

$value)$values[]="$key=".urlencode($value);$data_string=implode("&",$values);  // Find out which port is needed - if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80;  // building POST-request:$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";$request.="Host: ".$URL_Info["host"]."\n";$request.="Referer: $referer\n";$request.="Content-type: application/x-www-form-urlencoded\n";$request.="Content-length: ".strlen($data_string)."\n";$request.="Connection: close\n";  $request.="Cookie:   $cookie\n";  $request.="\n";$request.=$data_string."\n";  $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp, $request);while(!feof($fp)) {$result .= fgets($fp, 1024);}fclose($fp);  return $result;}?>



方法7:使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經開啟了curl擴充


  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.