« CakePHPソースコード読書会をやりますMashup Caravan in NAGOYAに参加します »

第10回高蔵寺SE勉強会を開催しました

パーマリンク 2008/07/06 22:48:51 著者: あつ メール
カテゴリ: PHP, CakePHP, Ajax, 勉強会・セミナー

第10回高蔵寺SE勉強会を開催しました

第10回高蔵寺SE勉強会を開催しました。

今回の宿題は「PHPでスクレイピングしてみよう」とのことだったので、このブログの右側にある「今日の料理」コーナーをスクレイピングで表示するようにしてみました。

<?php
$url = $_GET['url'];
$img_url = $_GET['img_url'];
$width = $_GET['width'];
$count = $_GET['count'];

if (empty($url) || empty($img_url)) {
exit;
}
if (empty($width)) {
$width = 200;
}
if (empty($count)) {
$count = 5;
}

$img_url = str_replace('/', '\\/', $img_url);
$pattern = '<img.+?src=[\\'"][^\\'"]*(' . $img_url . '.+?)[\\'"].*?\\/>';

$i = 1;
$page = 1;
$base_url = $url;

echo 'document.write(\'<ul class="thumbnail">\');';
while ($i <= $count) {
$html = file($url);
$str = implode('', $html);

// 画像取得
$str = mb_convert_encoding($str, 'EUC-JP', 'UTF-8');
if (preg_match_all('/' . $pattern . '/i', $str, $match)) {
foreach ($match[1] as $value) {
// URL 取得(画像の後にrdf情報があるとする)
$pattern2 = 'rdf:about="(.*)"';
$str2 = explode($value, $str);
if (preg_match('/' . $pattern2 . '/i', $str2[1], $match2)) {
echo 'document.write(\'<li><a href="' . $match2[1] . '"><img src="' . $value . '" width="' . $width . '" border="0"></a></li>\');';
$i++;
if ($i > $count) { break; }
}
}
}
// ページは5ページ前まで
$page++;
$url = $base_url . '?paged=' . $page;
if ($page > 5) { $i = $count + 1; }
}
echo 'document.write(\'</ul>\');';

結構決め打ちの部分が多数。

今回はおみうが面白いことをやっていたので、今後スクレイピングをやる時には参考にしようと思う。



僕の発表は「CakePHPでの安全なサイトの作り方1~SQLインジェクション~」を行いました。
資料は高蔵寺SE勉強会ブログに掲載してあります。
これをきっかけにセキュリティへの意識を高めていって欲しいです。


もう一つの発表はみっくの「CakePHPでAjax [入門編]」。
知らない部分もあり、いままでAJAXで作った部分を見直そうかなと思いました。


あとは、近況報告などで時間がなくなってしまったので、先週からスタートした開発は今日はありませんでした。

次回の宿題は僕から出題することになりましたので、お楽しみに♪

この記事へのトラックバック アドレス

トラックバックURL(右クリックでURLのコピーをしてください)

フィードバックはまだありません...

コメントを残す


頂いたメールアドレスはこのサイト上には表示されません

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))

あつ

Facebookやってます

愛知県名古屋市在住のWEBシステム屋(SE・プログラマ)。株式会社一六社(いちろくしゃ)所属。PHP、 CakePHPを利用して日々開発中。WEBで地域活性化を目指します。好き:フットサル/GTD/Mac/ 住んだことのある場所:一宮(愛知)、豊田(愛知)、浜松(静岡)、浦添(沖縄)、中津川(岐阜)、名古屋(愛知)

検索

タグクラウド

勉強会

欲しい物リストの全て

レコメンデーションエンジン

16ブログ     b2