PHP の cURL ライブラリを使用すると、Web ページを簡単かつ効果的にスクレイピングできます。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なデータをプログラムで取得できます。リンクから部分データを取得する場合でも、XML ファイルを取得してデータベースにインポートする場合でも、単に Web ページのコンテンツを取得する場合でも、cURL は強力な PHP ライブラリです。
PHPのCURL関数ライブラリ(Client URL Library Function)
curl_close — CURL セッションを閉じる
curl_copy_handle — Curl 接続リソースのすべてのコンテンツとパラメーターをコピーします
curl_errno — 現在のセッションのエラー情報を含む数値を返します
curl_error — 現在のセッションのエラー情報を含む文字列を返します
curl_exec —curl セッションを実行します
curl_getinfo — CURL 接続リソース ハンドルに関する情報を取得します
curl_init — Curl セッションを初期化します
curl_multi_add_handle — 個々のcurlハンドルリソースをcurlバッチセッションに追加します
curl_multi_close — バッチ ハンドル リソースを閉じる
curl_multi_exec — Curl バッチ ハンドルを解析する
curl_multi_getcontent — フェッチされた出力のテキスト ストリームを返します
curl_multi_info_read — 現在解析されているcurlの関連する送信情報を取得します
curl_multi_init — Curl バッチ ハンドル リソースを初期化します
curl_multi_remove_handle — Curl バッチ ハンドル リソース内のハンドル リソースを削除します
curl_multi_select — cURL 拡張機能に関連付けられたすべてのソケットを取得し、「選択」できます
curl_setopt_array — Curl のセッションパラメータを配列として設定します
curl_setopt — Curl のセッションパラメータを設定する
curl_version —curl 関連のバージョン情報を取得します
curl_init() 関数の関数は、curl セッションを初期化します。curl_init() 関数の唯一のパラメータは、URL アドレスを表します。
curl_exec() 関数は、curl セッションを実行するために使用されます。唯一のパラメータは、curl_init() 関数によって返されるハンドルです。
curl_close() 関数は、curl セッションを閉じるために使用されます。唯一のパラメータは、curl_init() 関数によって返されるハンドルです。
例 1: 基本的な例
基本的な例﹤?php
// cURL オブジェクトを初期化します
$curl =curl_init();
// クロールする必要がある URL を設定します
curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');
//ヘッダーを設定します
curl_setopt($curl, CURLOPT_HEADER, 1);
//結果を文字列で保存するか画面に出力するように cURL パラメータを設定します。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// cURL を実行して Web ページをリクエストします
$data =curl_exec($curl);
// URL リクエストを閉じる
curl_close($curl);
//取得したデータを表示
var_dump($data);
?>
例 2: POST データ
sendSMS.php。2 つのフォーム フィールドを受け入れることができます。1 つは電話番号、もう 1 つはテキスト メッセージの内容です。
POSTデータ﹤?php
$phoneNumber ='13812345678';
$message = 'このメッセージはcurlとphpによって生成されました';
$curlPost ='pNUMBER=' .urlencode($phoneNumber) .'&MESSAGE=' .urlencode($message) .'&SUBMIT=Send';
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.lxvoip.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);
?﹥
例 3: プロキシサーバーの使用
プロキシサーバーを使用﹤?php
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.cmx8.cn');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.lxvoip.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'ユーザー:パスワード');
$data =curl_exec();
curl_close($ch);
?﹥
例 4: 模擬ログイン
Curl は、DZ7.0 に適したログイン ディスク プログラムをシミュレートします。ユーザー名をユーザー名に、ユーザーパスをパスワードに変更するだけです。
Curl シミュレートされたログイン discuz プログラム
/**
* Curl シミュレートされたログイン ディスク プログラム
※認証コードを有効にしたフォーラムログイン機能はまだ実装されていません
*/
!extension_loaded('curl') && die('curl 拡張機能がロードされていません。');
$discuz_url = 'http://www.lxvoip.com';//フォーラムのアドレス
$login_url = $discuz_url .'/logging.php?action=login';//ログインページのアドレス
$get_url = $discuz_url .'/my.php?item=threads' //私の投稿
;
$post_fields = 配列();
//次の 2 つの項目は変更する必要はありません
$post_fields['ログインフィールド'] = 'ユーザー名';
$post_fields['loginsubmit'] = 'true';
//ユーザー名とパスワードは必ず入力してください
$post_fields['ユーザー名'] = 'lxvoip';
$post_fields['パスワード'] = '88888888';
//セキュリティの質問
$post_fields['質問ID'] = 0;
$post_fields['answer'] = www.2cto.com '';
//@todo 確認コード
$post_fields['seccoverify'] = '';
//FORMHASH から取得します
$ch =curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents =curl_exec($ch);
カール_クローズ($ch);
preg_match('/
$formhash = $matches[1]
;
} その他 {
Die('フォーラムハッシュが見つかりません。');
}
//データを投稿し、COOKIEを取得します
$cookie_file = ディレクトリ名(__FILE__) . '/cookie.txt';
//$cookie_file = tempnam('/tmp');
$ch =curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
カール_exec($ch);
カール_クローズ($ch);
//上記で取得した COOKIE を使用して、閲覧するためにログインする必要があるページのコンテンツを取得します
$ch =curl_init($get_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents =curl_exec($ch);
カール_クローズ($ch);
var_dump($contents);
?>
出典:幻想春の大陸
http://www.bkjia.com/PHPjc/478614.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/478614.html
技術記事
PHP の cURL ライブラリを使用すると、Web ページを簡単かつ効果的にスクレイピングできます。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なものをプログラムで取得できます...