ホームページ > バックエンド開発 > PHPの問題 > PHPでページコンテンツを取得する方法は何ですか

PHPでページコンテンツを取得する方法は何ですか

爱喝马黛茶的安东尼
リリース: 2023-02-23 12:06:01
オリジナル
4913 人が閲覧しました

PHPでページコンテンツを取得する方法は何ですか

# PHP が Web ページのコンテンツを取得するためのいくつかの方法

方法 1: file_get_contents を使用して get でコンテンツを取得するモード。

<?php 
$url=&#39;http://www.domain.com/?para=123&#39;; 
$html= file_get_contents($url); 
echo$html; 
?>
ログイン後にコピー

方法 2: file_get_contents 関数を使用して、投稿モードで URL を取得します。

<?php 
$url= &#39;http://www.domain.com/test.php?id=123&#39;; 
$data= array(&#39;foo&#39;=> &#39;bar&#39;); 
$data= http_build_query($data); 
$opts= array( 
&#39;http&#39;=> array( 
   &#39;method&#39;=> &#39;POST&#39;, 
   &#39;header&#39;=>"Content-type: application/x-www-form-urlencoded\r\n"  . 
       "Content-Length: "  . strlen($data) . "\r\n", 
   &#39;content&#39;=> $data 
)
); 
$ctx= stream_context_create($opts);
$html= @file_get_contents($url,&#39;&#39;,$ctx);
ログイン後にコピー

Cookie データを再度渡す必要がある場合は、

&#39;header&#39;=>"Content-type: application/x-www-form-urlencoded\r\n"  .
"Content-Length: "  . strlen($data) . "\r\n",
ログイン後にコピー

&#39;header&#39;=>"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 を開き、取得モードでコンテンツを取得します。

<?php 
$fp= fopen($url,&#39;r&#39;); 
$header= stream_get_meta_data($fp);//获取报头信息 
while(!feof($fp)) { 
$result.= fgets($fp, 1024); 
} 
echo"url header: {$header} <br>": 
echo"url body: $result"; 
fclose($fp); 
?>
ログイン後にコピー

関連する推奨事項:「

PHP 入門チュートリアル

方法 4: fopen を使用して URL を開き、投稿モードでコンテンツを取得します。

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

方法 5: fsockopen 関数を使用して URL を開き、ヘッダーと本文を含む完全なデータを取得モードで取得します。

<?php 
functionget_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) {
returnfalse; 
}else{ 
$request= "GET $query HTTP/1.1\r\n";
$request.= "Host: $url[host]\r\n"; 
$request.= "Connection: Close\r\n"; 
if($cookie)$request.="Cookie:   $cookie\n"; 
$request.="\r\n"; 
fwrite($fp,$request); 
while(!@feof($fp)) { 
$result.= @fgets($fp, 1024); 
} 
fclose($fp); 
return$result; 
} 
} 
//获取url的html部分,去掉header 
functionGetUrlHTML($url,$cookie=false) 
{ 
$rowdata= get_url($url,$cookie); 
if($rowdata) 
{ 
$body=stristr($rowdata,"\r\n\r\n"); 
$body=substr($body,4,strlen($body)); 
return$body; 
}    
   returnfalse; 
} 
?>
ログイン後にコピー

方法 6: fsockopen 関数を使用して URL を開き、ヘッダーと本文を含む完全なデータを POST モードで取得します。

<?php 
functionHTTP_Post($URL,$data,$cookie,$referrer="") 
{ 
   // parsing the given URL 
$URL_Info=parse_url($URL);
   // Building referrer 
if($referrer=="")// if not given use this script as referrer 
$referrer="111"; 
   // making string from $data 
foreach($dataas
$key=>$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 拡張機能がオンになっているかどうかを確認する必要がある場合があります。

<?php
$ch= curl_init(); 
$timeout= 5;
curl_setopt ($ch, CURLOPT_URL, &#39;http://www.domain.com/&#39;);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents= curl_exec($ch);
curl_close($ch); 
echo$file_contents;
?>
ログイン後にコピー

ここでは、php を使用して Web ページのソース コードを取得し、Web コンテンツをクロールするための 3 つの方法を集めました。実際のニーズに応じて選択できます。

1. file_get_contents を使用して Web ページのソース コードを取得します

この方法は最も一般的に使用され、必要なコードは 2 行だけで、非常にシンプルで便利です。

参照コード:

<?php
$fh= file_get_contents(&#39;http://www.webkaka.com/&#39;);
echo $fh;
?>
ログイン後にコピー

2. fopen を使用して Web ページのソース コードを取得する

この方法は多くの人が使用していますが、コード量が多くなります。

参考コード:

<?php
$fh = fopen(&#39;http://www.webkaka.com/&#39;, &#39;r&#39;);
if($fh){
    while(!feof($fh)) {
        echo fgets($fh);
    }
}
?>
ログイン後にコピー

3.curlを使ってWebページのソースコードを取得する

curlを使ってWebページのソースコードを取得する方法は以下の通りです。 Web ページのコンテンツをクロールする必要がある場合、Web ページのヘッダー情報、ENCODING エンコードの使用、USERAGENT の使用などを取得することもできます。など、より高い要件を持つユーザーによってよく使用されます。

参照コード 1:

<?php
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.webkaka.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// 抓取URL并把它传递给浏览器
data=curlexec(ch);
echo $data;
//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>
ログイン後にコピー

参照コード 2:

<?php
$szUrl = "http://www.webkaka.com/";
$UserAgent = &#39;Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 
3.0.04506; 
.NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)&#39;;
$curl = curl_init();
curl_setopt(curl,CURLOPTURL,szUrl);
curl_setopt($curl, CURLOPT_HEADER, 0);  //0表示不输出Header,1表示输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, &#39;&#39;);
curl_setopt(curl,CURLOPTUSERAGENT,UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
data=curlexec(curl);
echo $data;
//echo curl_errno($curl); //返回0时表示程序执行成功 如何从curl_errno返回值获取错误信息
ログイン後にコピー

以上がPHPでページコンテンツを取得する方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート