コマンドプロンプト「概要をファイルにまとめろ!!」編

コマンドプロンプト > コマンドプロンプト「概要をファイルにまとめろ!!」編

ジャックの今までの行動から推測すると、前回のように「データをすべて俺の端末送信しろ!!」ではなく、時には「概要をファイルにまとめろ!!」と言い出してくることも予想されます。

さらに「書類としてプリントアウトして俺に渡せ!!」とアナログ的なことを言い出してくるかもしれません。

そんな時のために概要だけを抽出しプリントアウト用に最適化を行う実行ファイルを作成しておいたほうがよいかもしれません。

ジャックとの付き合いの長いクロエのことです。

ジャックが言い出しそうなことを予測して、既にそれに備えているかもしれません。

ウィキペディアページの中から概要部分だけ・・・と言っても、現実問題、人的判断と違い、プログラムによる絞り込みには限度がありますので、ここはひとつ、他ページへのリンク箇所を省いた、生のテキスト部分だけを抽出する方法で行いたいと思います。

まず初めにスクレイピングで必要な部分だけを抽出したうえで、ブラウザ出力させる実行ファイルを作成します。

それに伴い「simple_html_dom.php」のファイルも入手します。

スクレイピング処理はPHPで行いますのでPHPが動作する環境が必要になります。

既にレンタルサーバー等で自分のサーバースペースを設けているなら問題ありませんが、そうでないならば、ご自分のPCにローカルサーバーを構築する必要があります。

必要なものは、スクレイピング用の実行ファイルと「simple_html_dom.php」、そしてコマンドプロンプトからこれらのファイルにアクセスするためのバッチファイル・・・ということになります。

「simple_html_dom.php」については検索等を使い、予めダウンロードしておいてください。

スクレイピング処理用のファイルを作成

<?php

include "simple_html_dom.php";

$key = mb_convert_encoding($_GET['research'], 'UTF-8', 'SJIS');
$key = htmlspecialchars($key, ENT_QUOTES, 'UTF-8');

function wikiresearch($key){
	$getquery = urlencode($key);
	$wikiconQuery = "https://ja.wikipedia.org/wiki/" . $getquery;
	$wikiconhtml = @file_get_html($wikiconQuery);
	if($wikiconhtml) {
		foreach($wikiconhtml->find('p') as $wikiconlist) {
			mb_regex_encoding ('UTF-8');
			$wikicontent = htmlspecialchars($wikiconlist->plaintext, ENT_QUOTES, 'UTF-8');
			echo '<p>'.$wikicontent.'</p>';
		}
	}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title><?php echo $key; ?></title>
</head>
<body>
<div align="center"><h1><?php echo $key; ?>の調査報告書</h1></div>
<?php echo wikiresearch($key); ?>
</body>
</html>

上記を「index.php」(文字コードUTF-8)で保存し、「simple_html_dom.php」と共にサーバーの任意のディレクトリ内へアップロードし、サブドメイン等のURLを作成して割り当ててください。

コマンドプロンプト用のバッチファイルの作成

@echo off
setlocal
start iexplore -new http://xxx.xxx.xxx/?research=%1

「xxx」の部分を上で割り当てたURLと入れ替えます。

上記コマンドを「po.cmd」で保存し、前回作成した「rs.cmd」が入っている「Command」ディレクトリ内に置きます。

実際のところはブラウザに出力せずにプリントアウトまでの一連の流れをコマンドで行いたいところですが、「print」コマンドは環境によって動いたり動かなかったりも、じゅうぶん考えられますので、純粋にブラウザに出力して、それをプリントアウトする無難な方法で行きます。

実際、このやり方のほうが早いですし、ブラウザでレンダリングされた状態をプリントアウトしたほうが見栄えの良い書類が出来るはずです。

あとはコマンドプロンプト画面から「po キーワード」で概要部分だけが掲載されたブラウザが立ち上がりますので、そのままプリントアウト作業に移行すればよろしいかと思います。