ニュースサイトを解析…htmlSQLを使ってみる

『多くのニュースサイトに紹介されている記事は良いページだろう』というアルゴリズムにしたがって,ニュースサイトを解析して,人気のある記事を抽出するプログラムを作ってみよう.
サンプル→Webnews.ota(こんな感じのHTMLが出力される)

目標

このアイディアは以前JAVAで実装したことがあるのだが,サーバーにおいて置き(PHP),一定時間ごとに呼び出され,自動的にHTMLを出力してくれるものを作りたい.
そしてさらに,ニュースサイトを解析するときにhtmlSQLというライブラリを使ってみる.
(現在実装はほとんど終わったが,サーバで期待通りに動いてくれない.localな環境では期待通りに動いてくれているのだけれどw)
(サーバから突然,エラーメッセージとか無しで終了される.なぜだろう?)

htmlSQL

HTMLの要素をSQLのように取り出せるPHPのライブラリ『htmlSQL』 | IDEA*IDEAで紹介されている便利そうなライブラリ.

<?php
function get_title_sql($url){
	global $wsql;
	// connect to a URL
	if (!$wsql->connect('url', $url)){
		print 'Error while connecting: ' . $wsql->error;
		exit;
	}
	if (!$wsql->query('SELECT text FROM title')){
		print "Query error: " . $wsql->error; 
		exit;
	}
	return $wsql->fetch_array();
}
?>

こんな感じで呼び出すと,指定したURLから,SELECT文で指定した要素をとってきてくれるという超便利そうな代物


他に今回PHPを弄っていて面白かった関数

array_multisort

<?php
$amounts = array();
foreach ($WnArray as $v){
	$amounts[] = $v->count;
}
array_multisort($amounts, SORT_DESC, SORT_NUMERIC, $WnArray);
?>

PHPのarray_multisort関数が激便利だったので紹介 : akiyan.com
array_multisort関数は、sort関数などではソートできないような多次元の配列をソートするためのPHPの関数です。SQLのORDER句に似た動作を配列に対して適用することができます。

なんじゃこりゃww
便利すぎる.

<?php
class WnClass{
	var $url;
	var $title;
	var $count = 1;
	var $moto;
}
?>

こんな感じのオブジェクトを$WnArrayで配列として繋げてるんだが,このオブジェクトをcountの大きい順番でソートしてくれてます.すげぇ