http://www.nikkei.co.jp/
などからトピックスになっている部分を抜き出すようなプログラムはどのように実装できるでしょうか?
簡単&信頼性の高いモジュールなどありますでしょうか?
(当然、権利の問題などありますが、上記のURLは例です)
例えば、このサイトを例にすると、
---------ここから引用-----------------------------
<!--FJZONE START NAME=”MIDASHI” -->
ここの一行にトピックニュース
<!--FJZONE END NAME=”MIDASHI” -->
---------ここまで引用-----------------------------
という形式になっています。
それに対して、私のサイトのユーザーが、サイト内の特定のページに訪れた瞬間に、
NIKKEI NETサイトのこの真ん中の文字列を抜き出し、ページ内に表示するようなイメージです。
よろしくお願いいたします。
http://naoya.dyndns.org/~naoya/mt/archives/000833.html
Template::Extract + XML::RSS でRSS 生成 : NDO::Weblog
そのような目的を達成するには、LWP でダウンロードした HTML ファイル Template::Extract で解析するのが良いのではないかと思います。
http://x68000.q-e-d.net/~68user/net/
ネットワークプログラミングの基礎知識
RSSを提供していないようなサイトで
特定の部分を抜き出すということですよね。
もっとも簡単な手順は以下でできます。
(0)該当ページのソースを取得する。
※HTTPCliantなど
(1)正規表現を使用して必要な部分を抽出。
<例>
$SOURCE ←この中に該当ページのHTMLソース
$SOURCE = ’AAAAA<!--FJZONE START NAME=”MIDASHI” -->ここの一行にトピックニュース<!--FJZONE END NAME=”MIDASHI” -->BBBBB’;
$S = ’<!--FJZONE START NAME=”MIDASHI” -->’;
$E = ’<!--FJZONE END NAME=”MIDASHI” -->’;
if($SOURCE =~ /$S.*$E/i){
$TARGET = ”$&”;
$TARGET =~ s/$S|$E//g;
print ”$TARGET”;
}
$S = ”<!--FJZONE START NAME=”MIDASHI” -->”;
$E = ”<!--FJZONE END NAME=”MIDASHI” -->”;
$SOURCE =~ /$S.*$E/;
$TARGET = ”$&”;
おそらくもっと良い方法は沢山あると思いますが、簡単な例として投稿しました。
リンク先には、ネットワークプログラミングの例があるページです。
このページも頂いたサンプルもステップ毎にわかりやすくて助かります。勉強してみます。
Template Toolkit 関連の日本語ドキュメントはまだほとんどないようです。
とりあえず例示の日経のトピックスを抽出するサンプルプログラムを置いておきます。
(今回は手抜きサンプルなのでアクセス毎に日経の Web サーバに情報を取りに行っていますが、実際に使う時には相手方のサーバに迷惑をかけないよう情報をキャッシュする等配慮した作りにしてください)
ここまでしていただけるとは。
参考に制作させていただきます。
ありがとうございます。
http://www.amazon.co.jp/exec/obidos/ASIN/4873111870/ref=ase_koko...
Amazon.co.jp: Spidering hacks―ウェブ情報ラクラク取得テクニック101選: 本: Kevin Hemenway,Tara Calishain,村上 雅章
活字メディアではありますが、おすすめの一冊です。
101選・・・。本件以外の100個も知りたいですね。
見てみます。
なるほど、試してみます。
使い方が日本語で説明のあるページはありませんか?