PHP の cURL ライブラリを使用して、Web ページを簡単かつ効果的にクロールします。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なデータをプログラムで取得できます。リンクから部分データを取得する場合でも、XML ファイルを取得してデータベースにインポートする場合でも、単に Web ページのコンテンツを取得する場合でも、cURL は強力な PHP ライブラリです。この記事では主にこのPHPライブラリの使い方について説明します。
cURL 設定を有効にする
まず、PHP でこのライブラリが有効になっているかどうかを確認する必要があります。この情報は php_info() 関数を使用して取得できます。
phpinfo(); ?> |
Web ページに次の出力が表示される場合は、cURL ライブラリが有効になっていることを意味します。
これが表示された場合は、PHP をセットアップしてこのライブラリを有効にする必要があります。 Windows プラットフォームを使用している場合、php.ini ファイルの設定を変更し、php_curl.dll を見つけて、前のセミコロンのコメントをキャンセルするだけです。以下に示すように:
//取消下在的注释 extension=php_curl.dll |
Linux を使用している場合は、編集時に PHP を再コンパイルする必要があります。コンパイル パラメータをオンにする必要があります。configure コマンドに「-with-curl」パラメータを追加します。
小さな例
すべての準備ができたら、次の小さなルーチンを実行します:
// 初始化一个 cURL 对象 $curl = curl_init(); // 设置你需要抓取的URL curl_setopt($curl, CURLOPT_URL, 'http://cocre.com'); // 设置header curl_setopt($curl, CURLOPT_HEADER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行cURL,请求网页 $data = curl_exec($curl); // 关闭URL请求 curl_close($curl); // 显示获得的数据 var_dump($data); ?> |
データの投稿方法
上記は Web ページをクロールするコードで、次は Web ページにデータを POST するコードです。フォーム処理 URL http://www.example.com/sendSMS.php があり、2 つのフォーム フィールド (1 つは電話番号、もう 1 つはテキスト メッセージのコンテンツ) を受け入れることができるとします。
$phoneNumber = '13912345678'; $message = 'This message was generated by curl and php'; $curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec();curl_close($ch); ?> |
上記のプログラムから、GET メソッドの代わりに CURLOPT_POST を使用して HTTP プロトコルの POST メソッドを設定し、CURLOPT_POSTFIELDS で POST データを設定していることがわかります。
プロキシサーバーについて
プロキシ サーバーの使用方法の例を次に示します。強調表示されたコードに注目してください。コードは非常に単純なので、これ以上説明する必要はありません。
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080'); curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); $data = curl_exec();curl_close($ch); ?> |
SSL と Cookie について
HTTPS プロトコルである SSL については、CURLOPT_URL 接続の http:// を https:// に変更するだけです。もちろん、サイトを検証するために設定できる CURLOPT_SSL_VERIFYHOST というパラメーターもあります。
Cookie については、次の 3 つのパラメータを理解する必要があります:
CURLOPT_COOKIE、対面セッション中に Cookie を設定します
CURLOPT_COOKIEJAR、セッション終了時に Cookie を保存します
CURLOPT_COOKIEFILE、クッキー ファイル。
HTTP サーバー認証
最後に、HTTP サーバー認証について見てみましょう。
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt(CURLOPT_USERPWD, '[username]:[password]') $data = curl_exec(); curl_close($ch); ?> |
詳細については、関連する cURL マニュアルを参照してください。