ニュースサイトを解析…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の大きい順番でソートしてくれてます.すげぇ