cURL を使用したページ コンテンツの取得
このコンテキストでは、cURL を使用して Google 検索結果ページのコンテンツを取得しようとします。ユーザー エージェントやさまざまなオプションを設定しようとしましたが、ページ コンテンツを正常に取得できませんでした。リダイレクトまたは「ページが移動されました」エラーが引き続きあなたの努力を悩ませています。
この問題は、クエリ文字列内の特殊文字のエンコーディングに起因している可能性があると考えられています。これを軽減するには、PHP コードを変更する必要があります。
アプローチは次のとおりです:
<code class="php">function get_web_page($url) { $user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0'; $options = array( CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_POST => false, CURLOPT_USERAGENT => $user_agent, CURLOPT_COOKIEFILE => "cookie.txt", CURLOPT_COOKIEJAR => "cookie.txt", CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10 ); $ch = curl_init($url); curl_setopt_array($ch, $options); $content = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ch); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; }</code>
使用法:
<code class="php">$result = get_web_page($url); if ($result['errno'] != 0) { // Handle errors: bad URL, timeout, redirect loop } if ($result['http_code'] != 200) { // Handle errors: no page, no permissions, no service } $page = $result['content'];</code>
これを使用しますコードを使用すると、ブラウザに表示されるとおりの正確なページ コンテンツを取得できるようになります。クエリ文字列内の特殊文字を考慮することで、以前に直面した障害を克服できます。
以上が「ページが移動されました」エラーにもかかわらず cURL を使用してページ コンテンツを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。