PHP応用 cURLを利用したスパイダーツールを作ってみよう。
- 2009.03.15 (日) 20:11
- PHP
PHPのcURLを利用したスパイダーツールを作ってみようと思います
ここで紹介するプログラムは、色々な文献を参考に作っていますが、相手のサイトへかかる負荷を考えたプログラムになっていないものもたくさんあります。
データをクロールする相手サイトのことも考えて利用するようにしてください。
まずは、簡単にデータを取得するプログラムを作りたいと思います。
データを取得することができないと何も始まらないからです。
では、
この有名サイトからロゴマークを取得するプログラムを作ってみます。
cURLを使用するためにパッケージが足りないので追加します。
1 |
sudo apt-get install php5-curl |
これでcURL関数が使えるようになります。
コマンドラインPHPを実行するフレームワークもどきをつくりました。
フォルダ構成はこんな感じです。
で、重要な、「httpget.php」と「curl.php」を説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
<?php /** * cURLクラス * * cURLを使用してファイルを取得する * * @access public * @author Masaru Hashizume <hashizume@m.email.ne.jp> * @copyright Copyright (c) 2009, Masaru Hashizume * @version 1.00 * @since 2009/02/24 */ class Curl { /** * cURLハンドラー */ private $curl_handler = null; /** * * コンストラクタ * * @access public * @return void */ public function __construct() { $this->curl_handler = curl_init(); } /** * * デストラクタ * * @access public * @return void */ public function __destruct() { curl_close($this->curl_handler); } /** * * HTTP GETで引数で指定したURLのデータを取得する * * @access public * @param string URL * @return mixed */ public function get($url) { //入力値のチェック if (!$url) { return false; } //cURLのオプション設定 curl_setopt($this->curl_handler, CURLOPT_URL, $url); curl_setopt($this->curl_handler, CURLOPT_HEADER, false); curl_setopt($this->curl_handler, CURLOPT_RETURNTRANSFER, true); //URL情報取得 $data = curl_exec($this->curl_handler); return $data; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php /** * * HTTP GETメソッドでデータを取得しファイルに保存する * * @access public * @author Masaru Hashizume <hashizume@veryposi.info> * @copyright Copyright (c) 2009, Masaru Hashizume * @version 1.00 * @since 2009/03/15 */ $url = $param[0]; //正規表現によるファイル名の抽出 $reg = ".*\/(.*?)$"; mb_ereg_search_init($url, $reg, "ms"); $filename = mb_ereg_search_regs(); //データの取得 $curl = new Curl(); //ファイルへのデータの保存 file_put_contents($filename[1], $curl->get($url)); ?> |
コマンドを実行すると
1 |
php cli.php httpget http://k.yimg.jp/images/top/sp/logo.gif |
「logo.gif」が作成されます。
これがダウンロードされたロゴです。
これでHTTPのGETリクエストでファイルを取得することができました
今回使ったプログラム一式:cli
コメント:0件
トラックバック:2件
-
[...] cURLを利用したスパイダーツールを作ってみよう [...]
PHPでURLの存在チェック
PHPでcURLを用いて URLの存在チェックを行うプログラムを作る。関数file_exestsと異なり、HTTPステータスを取得することができる。