ホームページ >バックエンド開発 >PHPチュートリアル >PHPのcURLライブラリを使用する
PHP の cURL ライブラリを使用して、Web ページを簡単かつ効果的にクロールします。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なデータをプログラムで取得できます。リンクから部分データを取得する場合でも、XML ファイルを取得してデータベースにインポートする場合でも、単に Web ページのコンテンツを取得する場合でも、cURL は強力な PHP ライブラリです。この記事では主にこのPHPライブラリの使い方について説明します。
cURL 設定を有効にする
まず、PHP でこのライブラリが有効になっているかどうかを確認する必要があります。この情報は、php_info() 関数を使用して取得できます。
<?php phpinfo(); ?>
Web ページに次の出力が表示される場合は、cURL がライブラリがオンになっています。
これが表示された場合は、PHP をセットアップしてこのライブラリを有効にする必要があります。 Windows プラットフォームを使用している場合、php.ini ファイルの設定を変更し、php_curl.dll を見つけて、前のセミコロンのコメントをキャンセルするだけです。以下に示すように:
//取消下在的注释 extension=php_curl.dll
Linux を使用している場合は、編集時に PHP を再コンパイルする必要があります。configure コマンドでコンパイル パラメーターをオンにします。 「--with-curl」パラメータ。
一个小示例
如果一切就绪,下面是一个小例程:
<?php // 初始化一个 cURL 对象 $curl= curl_init(); // 设置你需要抓取的URL curl_setopt($curl, CURLOPT_URL, 'http://www.daimami.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);
如何POST数据
上面是抓取网页的代码,下面则是向某个网页POST数据。假设我们有一个处理表单的网址http://www.example.com/sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
<?php $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.daimami.com'); 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); ?>
从上面的程序我们可以看到,使用CURLOPT_POST设置HTTP协议的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS设置POST的数据。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
<?php $ch= curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.daimami.com'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($ch, CURLOPT_PROXY, 'proxy.com:1080'); curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); $data= curl_exec(); curl_close($ch); ?>
关于SSL和Cookie
关于SSL也就是HTTPS协议,你只需要把CURLOPT_URL连接中的http://变成https://就可以了。当然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点。
关于Cookie,你需要了解下面三个参数:
CURLOPT_COOKIE,在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR,当会话结束的时候保存一个Cookie
CURLOPT_COOKIEFILE,Cookie的文件。
HTTP服务器认证
最后,我们来看一看HTTP服务器认证的情况。
<?php $ch= curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.daimami.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手册吧。