Heim >Backend-Entwicklung >PHP-Problem >Welche Möglichkeiten gibt es, Seiteninhalte in PHP abzurufen?
Mehrere Möglichkeiten, Webinhalte in PHP abzurufen
Methode 1: Verwenden Sie file_get_contents, um den Inhalt im Get-Modus abzurufen .
<?php $url='http://www.domain.com/?para=123'; $html= file_get_contents($url); echo$html; ?>
Methode 2: Verwenden Sie die Funktion file_get_contents, um die URL im Post-Modus abzurufen.
<?php $url= 'http://www.domain.com/test.php?id=123'; $data= array('foo'=> '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);
Wenn Sie erneut Cookie-Daten übergeben müssen, ändern Sie einfach
'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n",
in
'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " .strlen($data) . "\r\n". "cookie:cookie1=c1;cookie2=c2\r\n";
.
Methode 3: Verwenden Sie fopen, um die URL zu öffnen und den Inhalt im Get-Modus abzurufen.
<?php $fp= fopen($url,'r'); $header= stream_get_meta_data($fp);//获取报头信息 while(!feof($fp)) { $result.= fgets($fp, 1024); } echo"url header: {$header} <br>": echo"url body: $result"; fclose($fp); ?>
Verwandte Empfehlungen: „PHP Erste Schritte Tutorial“
Methode 4: Verwenden Sie fopen, um die URL zu öffnen und den Inhalt im Post-Modus abzurufen.
<?php $data= array('foo2'=> '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; ?>
Methode 5: Verwenden Sie die fsockopen-Funktion, um die URL zu öffnen und die vollständigen Daten im Get-Modus abzurufen, einschließlich Header und Text.
<?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; } ?>
Methode 6: Verwenden Sie die Funktion fsockopen, um die URL zu öffnen und die vollständigen Daten im POST-Modus abzurufen, einschließlich Header und Text.
<?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; } ?>
Methode 7: Verwenden Sie die Curl-Bibliothek. Bevor Sie die Curl-Bibliothek verwenden, müssen Sie möglicherweise überprüfen, ob die Curl-Erweiterung in php.ini aktiviert wurde.
<?php $ch= curl_init(); $timeout= 5; curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents= curl_exec($ch); curl_close($ch); echo$file_contents; ?>
Hier sind drei Methoden zur Verwendung von PHP zum Abrufen des Quellcodes einer Webseite und zum Crawlen von Webinhalten, die wir entsprechend den tatsächlichen Anforderungen auswählen können.
1. Verwenden Sie file_get_contents, um den Quellcode der Webseite zu erhalten.
Diese Methode wird am häufigsten verwendet und erfordert nur zwei Codezeilen. Sie ist sehr einfach und praktisch.
Referenzcode:
<?php $fh= file_get_contents('http://www.webkaka.com/'); echo $fh; ?>
2. Verwenden Sie fopen, um den Quellcode der Webseite zu erhalten
Viele Leute verwenden diese Methode, aber sie enthält viel Code.
Referenzcode:
<?php $fh = fopen('http://www.webkaka.com/', 'r'); if($fh){ while(!feof($fh)) { echo fgets($fh); } } ?>
3. Verwenden Sie Curl, um den Quellcode einer Webseite zu erhalten.
Die Verwendung von Curl zum Abrufen des Quellcodes einer Webseite wird häufig von Personen mit höheren Anforderungen verwendet, z Wenn Sie den Inhalt einer Webseite crawlen müssen, können Sie auch die Kopfzeileninformationen der Webseite, die Verwendung der ENCODING-Codierung, die Verwendung von USERAGENT usw. abrufen.
Referenzcode eins:
<?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); ?>
Referenzcode zwei:
<?php $szUrl = "http://www.webkaka.com/"; $UserAgent = '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)'; $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, ''); curl_setopt(curl,CURLOPTUSERAGENT,UserAgent); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); data=curlexec(curl); echo $data; //echo curl_errno($curl); //返回0时表示程序执行成功 如何从curl_errno返回值获取错误信息
Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Seiteninhalte in PHP abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!