新しいブログに移動しました。
9ensanのLifeHack
こちらの記事も必要に応じて新しいブログに移動させる予定です。
今後ともよろしくお願い致します。

HOME > PHP > 

PHP応用 cURLを利用したスパイダーツールを作ってみよう。

PHP応用 cURLを利用したスパイダーツールを作ってみよう。

  • 2009.03.15 (日) 20:11
  • PHP

PHPのcURLを利用したスパイダーツールを作ってみようと思います

ここで紹介するプログラムは、色々な文献を参考に作っていますが、相手のサイトへかかる負荷を考えたプログラムになっていないものもたくさんあります

データをクロールする相手サイトのことも考えて利用するようにしてください。

ずは、簡単にデータを取得するプログラムを作りたいと思います。

データを取得することができないと何も始まらないからです。

では、

php-spider-01

この有名サイトからロゴマークを取得するプログラムを作ってみます。

 cURLを使用するためにパッケージが足りないので追加します。

1
sudo apt-get install php5-curl

これでcURL関数が使えるようになります。

 コマンドラインPHPを実行するフレームワークもどきをつくりました。

php-spider-02

フォルダ構成はこんな感じです。

で、重要な、「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

 php-spider-03

 「logo.gif」が作成されます。

logo

これがダウンロードされたロゴです。

これでHTTPのGETリクエストでファイルを取得することができました

今回使ったプログラム一式:cli

コメント:0件

コメント投稿フォーム
コメントを入力して下さい。
ユーザー名(必須)
メールアドレス(必須)(非公開)
ホームページ
コメント

トラックバック:2件

  1. PHPでURLの存在チェック

    PHPでcURLを用いて URLの存在チェックを行うプログラムを作る。関数file_exestsと異なり、HTTPステータスを取得することができる。

  2. [...] cURLを利用したスパイダーツールを作ってみよう [...]

この記事のトラックバックURL
http://blog.veryposi.info/programing/php/php-spider/trackback/
お薦めのレンタルサーバー
広告
お薦めの書籍
HOME > PHP > 

PHP応用 cURLを利用したスパイダーツールを作ってみよう。